![]() |
|
|
Регистрация | << Правила форума >> | 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; Пишу программы за еду. __________________ |