Показать сообщение отдельно
  #4  
Старый 21.01.2023, 16:42
Shaft Shaft вне форума
Новичок
 
Регистрация: 15.05.2013
Сообщения: 74
Версия Delphi: 7/10.4
Репутация: 12
По умолчанию

Вангую, приложение это игра, поэтому она и не распознает твои SendMessage так как игры используют DirectInput

Цитата:
Сообщение от l2grom
весь интернет излазил но так и не нашел.
Да ну уж прям весь? На одном известном форуме в разделе посвященному Delphi есть мое сообщение от 19.08.2017 в котором я скинул человеку код для эмуляции нажатий в играх. Я просто скопирую его сюда, пусть тут тоже будет.

Клавиши(не все, тут только те что были нужны мне)
P.S. D0-D9 это цифры от 0 до 9 соответственно
Код:
{
DirectInputKey.A:=30;
DirectInputKey.B:=48;
DirectInputKey.C:=46;
DirectInputKey.D:=32;
DirectInputKey.E:=18;
DirectInputKey.F:=33;
DirectInputKey.G:=34;
DirectInputKey.H:=35;
DirectInputKey.I:=23;
DirectInputKey.J:=36;
DirectInputKey.K:=37;
DirectInputKey.L:=38;
DirectInputKey.M:=50;
DirectInputKey.N:=49;
DirectInputKey.O:=24;
DirectInputKey.P:=25;
DirectInputKey.Q:=16;
DirectInputKey.R:=19;
DirectInputKey.S:=31;
DirectInputKey.T:=20;
DirectInputKey.U:=22;
DirectInputKey.V:=47;
DirectInputKey.W:=17;
DirectInputKey.X:=45;
DirectInputKey.Y:=21;
DirectInputKey.Z:=44;
DirectInputKey.D0:=11;
DirectInputKey.D1:=2;
DirectInputKey.D2:=3;
DirectInputKey.D3:=4;
DirectInputKey.D4:=5;
DirectInputKey.D5:=6;
DirectInputKey.D6:=7;
DirectInputKey.D7:=8;
DirectInputKey.D8:=9;
DirectInputKey.D9:=10;
}
const KEYEVENTF_SCANCODE:Cardinal=8;

//key:Word - клавиша
//t:Integer - время в миллисекундах, сколько клавишу держать нажатой. 
procedure SendKey(key:Word; t:Integer);
var
  Inp:TInput;
begin
  Inp.Itype:=1;
  Inp.ki.wScan:=key;
  Inp.ki.dwFlags:=KEYEVENTF_SCANCODE;
  SendInput(2, Inp, SizeOf(Inp));
  Sleep(t);
  Inp.ki.dwFlags:=KEYEVENTF_KEYUP;
  SendInput(2, Inp, SizeOf(Inp));
end;
Ответить с цитированием