![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
procedure TForm1.tmr1Timer(Sender: TObject);
Вопрос вообщем в том чтобы проверить пиксель в определённых координатах на цвет и если он совпадает то нажать f1 если нет то подождать 10 секунд и начать проверку сначала.Заранее благодарен! Код:
procedure TForm1.tmr1Timer(Sender: TObject);
var
handle:Integer;
begin
handle:=FindWindow(nil, 'Косынка');
SetForegroundWindow(Handle);
sleep(2000);
if
//Если пиксель в координатах окна равен цвету (Не под курсором)
then
PostMessage(handle, WM_KEYDOWN, VK_F1, 0);
Sleep(1000);
PostMessage(handle, WM_IME_KEYUP, VK_F1, 0);
else
Sleep(10000);
end;Последний раз редактировалось Admin, 11.03.2012 в 12:35. |
|
#2
|
||||
|
||||
|
вариантов много...
-получаем THandle окна -помещаем окно на передний план -ждем немного (надо в этом варианте) -получаем HDC его клиентской области -получаем размеры его клиентской области -создаем TBitmap с размерами клиентской области окна -копируем HDC окна в TBitmap -получаем цвет пикселя в заданных координатах -удаляем TBitmap -освобождаем HDC окна можно подробнее: Код:
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
...
procedure TForm1.FormCreate(Sender: TObject);
var
h: THandle;
dc: HDC;
rct: TRect;
bmp: TBitmap;
begin
h:=FindWindow(nil, 'Косынка');
if h=0 then raise Exception.Create('!FindWindow');
SetForegroundWindow(h);
Sleep(1000);
dc:=GetDC(h);
Windows.GetClientRect(h, rct);
bmp:=TBitmap.Create;
bmp.Width:=rct.Right-rct.Left;
bmp.Height:=rct.Bottom-rct.Top;
BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, dc, 0, 0, SRCCOPY);
Color:=bmp.Canvas.Pixels[32, 32];
bmp.Free;
ReleaseDC(h, dc);
end; |
|
#3
|
||||
|
||||
|
вариант без TBitmap:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
h: THandle;
dc: HDC;
rct: TRect;
begin
h:=FindWindow(nil, 'Косынка');
if h=0 then raise Exception.Create('!FindWindow');
SetForegroundWindow(h);
Sleep(1000);
dc:=GetDC(h);
Windows.GetClientRect(h, rct);
Color:=GetPixel(dc, 32, 32);
ReleaseDC(h, dc);
end; |