ну получилось вот так (просто скопировал ваш код в свой)
Код:
procedure TForm1.zdc1tmrTimer(Sender: TObject);
begin
bmp := TBitmap.Create;
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
bmp.PixelFormat := pf24bit;
GetCursorPos(pos);
DC:=GetDC(0);
BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY);
colzdc1:= bmp.Canvas.Pixels [pos.x,pos.y];
ReleaseDC(0,DC);
shp1.brush.Color:=colzdc1;
но из за того что нужен постоянный мониторинг, и етовсе в таймере
за сек 30 работы проги съедаеться 2 гига оперативы
наскока я понял скриншот делаеться всего экрана
что затратно, мне будет достаточно скриншота в 1 пиксель
за это наверно отвечает Screen.Width, Screen.Height им надо значение 1
а как заставить делать этот скриншот в определеном месте экрана?
все нашел за это отвечают BitBlt(bmp.Canvas.Handle, 0, 0,Screen.Width, Screen.Height, DC,
0, 0, SRCCOPY);
красные нули
вообщем получилось чтото такое:
Код:
procedure TForm1.zdc1tmrTimer(Sender: TObject);
begin
bmp := TBitmap.Create;
bmp.Width := 1;
bmp.Height := 1;
bmp.PixelFormat := pf24bit;
GetCursorPos(pos);
DC:=GetDC(0);
BitBlt(bmp.Canvas.Handle, 0,0, 1, 1, DC, Pos.x,Pos.y, SRCCOPY);
colzdc1:= bmp.Canvas.Pixels [0,0];
ReleaseDC(0,DC);
shp1.brush.Color:=colzdc1;
вроде оперативку нетак хавает )
всеравно правда неработает в полноэкранном режиме наверно там както
спецом сделали чтоб цвет неопределялся (или это из за directx )
какими еще способами можно определить цвет пикселя?
так установил опытным путем что цвет который узнает програма это цвет под полоской очков жизней
очки жизни и прочие показатели героя в блоке который похож на окно в винде, внутри игры его можно свободно перемещать
насколько я понял мне надо его хвид узнать (если он у него есть, гдето читал что даже у флеш анимации в браузере хвид есть свой) и сделать вот так: DC:=GetDC(hwnd)
вот а как узнать этот хвид (например хвид окна игры я узнаю наведением мыши на облость окна, и у меня есть своя мини прога которая показывает
хвид того что под курсором)