Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2011, 15:58   #1
Vitek_DeadlyHunter
 
Регистрация: 01.11.2011
Сообщений: 3
По умолчанию эмуляция нажатия клавиши F

есть код:

Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
i:longint;

implementation

{$R *.dfm}


procedure SimulateKeystroke(Key : byte; extra : DWORD);
begin
keybd_event(Key,extra,0,0);
keybd_event(Key,extra,KEYEVENTF_KEY UP,0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
i:=i+1;
if i<=11 then label1.Caption:=inttostr(i-11) else
begin
label1.Caption:='';
SimulateKeystroke(70, 0);

end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=false;
i:=0;
label1.Caption:='stop';
end;

end.


всё работает(проверял на блокноте, Word'e) он как бы эмулирует событие нажатия 70 клавиши(f) и она печатается...
проблема вот в чем: я это делал для игрульки(7 элемент) ну что-то типо бота, НО! окно игры никак не реагирует, чем можете помочь?
Вложения
Тип файла: rar bot.rar (156.1 Кб, 36 просмотров)
Vitek_DeadlyHunter вне форума Ответить с цитированием
Старый 02.11.2011, 17:02   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Пример. Как послать сообщение из одного окна в другое о нажатии клавиши
Код:
PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
hWnd - нужное окно, посылаем нажатие клавиши ENTER (RETURN).

Еще пример. Как послать текст в Блокнот:
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
   wnd: HWND;
   i: Integer;
   s: string;
 begin
   wnd := FindWindow('notepad', nil);
   if wnd <> 0 then
   begin
     wnd := FindWindowEx(wnd, 0, 'Edit', nil);
    s := 'Hello';
     for i := 1 to Length(s) do
       SendMessage(wnd, WM_CHAR, Word(s[i]), 0);
     // Simulate Return Key. 
    PostMessage(wnd, WM_KEYDOWN, VK_RETURN, 0);
     // Simulate Space. 
    PostMessage(wnd, WM_KEYDOWN, VK_SPACE, 0);
   end;
 end;
Настоятельно рекомендую :
Тема наверху. Дабы избежать набивших оскомину вопросов.

Цитата:
Перед тем, как создавать тему, скачайте себе...
http://programmersforum.ru/showthread.php?t=120429

Последний раз редактировалось mihali4; 02.11.2011 в 17:06.
mihali4 вне форума Ответить с цитированием
Старый 02.11.2011, 17:09   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

игра может и вообще игнорировать сообщения о клавишах, если примеряет DirectInput

Пусть ТС экспериментирует
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось mihali4; 02.11.2011 в 17:21.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.11.2011, 12:44   #4
Vitek_DeadlyHunter
 
Регистрация: 01.11.2011
Сообщений: 3
По умолчанию

в общем игра использует nProtect Game Guard
может, абсолютно случайно, кто-нибудь имел дело с такой вещью?
Vitek_DeadlyHunter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача текста и эмуляция нажатия клавиши Danilka Общие вопросы Delphi 0 30.08.2011 18:45
Эмуляция нажатия клавиши в неактивном окне Ga-sergey Общие вопросы Delphi 6 27.05.2010 23:21
Эмуляция нажатия клавиши helenfly Win Api 9 01.12.2009 12:09
Эмуляция нажатия клавиши...... Zoidberg Win Api 4 11.01.2007 18:44