Всё спасибо разобрался! Если кому интересно вот два рабочих кода(с разными способами получения указателей на массив пикселей): Работают в отдельных потоках, внутри цикл. 1) Код (Text): EventStop:boolean; mas2:array [0..2600] of dword; WHandle,DC,CCDC:DWORD; //глобальные переменные Function TRD:boolean; {********* Функция треда (потока) ***************************} type mas=array [0..0] of dword; var BInfo: tagBITMAPINFO; i,j:dword; bmp:Hbitmap; Mbp: Pointer; //будет судержать указатель на массив пикселей begin DC:=GetDCEx(WHandle,0,DCX_WINDOW);//дескриптор контекста окна CCDC:=CreateCompatibleDC(DC); //дескриптор контекста устройства в памяти BInfo.bmiHeader.biSize := sizeof(tagBITMAPINFOHEADER); BInfo.bmiHeader.biWidth := 50; BInfo.bmiHeader.biHeight := 50; BInfo.bmiHeader.biPlanes := 1; BInfo.bmiHeader.biBitCount := 32; BInfo.bmiHeader.biCompression := BI_RGB; bmp:= CreateDIBSection(DC, BInfo, DIB_RGB_COLORS, Mbp, 0, 0); SelectObject(CCDC,bmp); repeat //sleep(100); bitblt(CCDC,0,0,50,50,DC,0,0, SRCCOPY); for i := 0 to 49 do for j := 0 to 49 do mas2[50*(50-j)+i]:=mas(Mbp^)[50*(50-j)+i]; WaitForSingleObject(hEventStart,INFINITE); until EventStop=true; DeleteObject(bmp); ReleaseDC(WHandle,DC); DeleteDC(CCDC); end; Для меня первый предпочтительней 2) Код (Text): Function TRD2:boolean; {********* Функция треда (потока) ***************************} var BInfo: tagBITMAPINFO; i,j:dword; bmp:Hbitmap; mas3:array [0..2600] of dword;//массив будет судержать пиксели begin BInfo.bmiHeader.biSize := sizeof(tagBITMAPINFOHEADER); BInfo.bmiHeader.biWidth := 50; BInfo.bmiHeader.biHeight := 50; BInfo.bmiHeader.biPlanes := 1; BInfo.bmiHeader.biBitCount := 32; BInfo.bmiHeader.biCompression := BI_RGB; DC:=GetDCEx(WHandle,0,DCX_WINDOW); CCDC:=CreateCompatibleDC(DC); bmp:=CreateCompatibleBitmap(DC,50,50); SelectObject(CCDC,bmp); repeat //sleep(100); bitblt(CCDC,0,0,50,50,DC,0,0, SRCCOPY); GetDIBits(CCDC,bmp,0,49,@mas3,BInfo,DIB_RGB_COLORS); for i := 0 to 49 do for j := 0 to 49 do mas2[50*(50-j)+i]:=mas3[50*(50-j)+i]; WaitForSingleObject(hEventStart,INFINITE); until EventStop=true; DeleteObject(Bmp); ReleaseDC(WHandle,DC); DeleteDC(CCDC); end;
калькуляторы оддсов, в которых я рылся, формулы не считали. Просто брали коэффициенты из табличек, забитых хардкодом или в ини-файлах. Комбинаций в принципе не астрономическое количество, чтобы считать формулами. можно и таблички позабивать.
Кто знает как можно в винде расширить рабочий стол на несколько мониторов и как с ними работать (какими апи функциями?) . Чтоб окна одного приложения были на разных мониторах но на одном рабочем сттоле? Подскажите пожалуйста Или как можно реализовать управления несколькимх окон??? А как можно создать виртуальный монитор и расширить на него рабочий стол ??????
А кто знает что за боты всякие в сети есть например "Holdem bot 2010", они рабочие или эт какой нить лохотрон ???
А как можно сделать виртуальный монитор, то есть так чтоб он как бы был (можно на него окна перетаскивать и тд.) а фактическое его присутствие не обязательно (т.е. ообще нету) ? Как это все сделать програмно в Delphi?????