day & night

Delphi эмуляция нажатия клавиш, при изменении цвета пикселя
Дата обновления: , перейти к новому сообщению
icon14
#1
RENEGAD



Новичок


Группа: Пользователи
Сообщений: 9
Регистрация: 4.11.2005
Пользователь №: 62.678


Респектов: 0
----------


Предупреждений:


Нужен скрипт, который при изменении цвета пикселя, с заранее известными координатами, эмулирует нажатие определённой клавиши. Заранее спасибо.
User is offline
Go topGo end
 

Ответов(1 - 2)
22.10.2007 - 10:12
#2
Quim2005



профи!
Group Icon

Группа: Наши Люди
Сообщений: 1.145
Регистрация: 19.01.2006
Из: Россия, г.Набережные Челны
Пользователь №: 111.013


Респектов: 314
-----XX---




Ну на скорую руку примерно так. Засунь все это дело в объект Timer1. Поставь период повторений не слишком маленький а то подвиснет.
Code

procedure TForm1.Timer1Timer(Sender: TObject);
var
   i, j: Integer;
   Color: TColor;
   w: Word;
begin
   // Чтобы приложение не "подвисало"
   Application.ProcessMessages;
   // Загружаем рисунок из файла
   Image1.Picture.LoadFromFile('c:\1.jpg');
   // Получаем цвет пикселя по координатам X=10, Y=10
   Color := Image1.Canvas.Pixels[10,10];
   // Сверяем цвет
   IF Color <> clRed Then
   Begin
       // Эмулируем нажатием буквы
       w := VkKeyScan('D');
       keybd_event(w, 0, 0, 0);
       // Клавиши F2
       keybd_event(VK_F2, 0, 0, 0);
       // Print Screen
       keybd_event(VK_SNAPSHOT, 0, 0, 0);
   End;
end;

Подобным образом можно нажать любую кнопку на клавиатуре. Если что-то не так понял, то говори smile.gif
Просто для чего тебе это? Не совсем понятно. Если объяснишь поточнее, то могу полностью проект скинуть.
User is offline
Go topGo end
22.10.2007 - 12:54
#3
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




Цитата | Quote(Quim2005 @ 22.10.2007 - 10:15)
Поставь период повторений не слишком маленький а то подвиснет.
*


Чтоб не висло и быстрее работало я бы сделал это не через таймер, а через обычный while. Для определения изменения цвета пикселя использовал бы GetPixel(). И запихнул бы это дело в поток с пониженным приоритетом.
User is offline
Go topGo end

Topic Options
Сейчас: 14.05.2024 - 2:31
Мобильная версия | Lite версия