-
тема уже была, но ее закрыли, так что спрошу еще раз
ка эмулировать нажатие клавиши в неактивном окне зная его
дескриптор (D3D Window)
насколько я понял SendMessage не поможет
так же я нашел пример
procedure EmulateKey(Wnd: HWND; VKey: Integer);
asm
push 0
push edx
push 0101H //WM_KEYUP
push eax
push 0
push edx
push 0100H //WM_KEYDOWN
push eax
call PostMessage
call PostMessage
end;
// Пример использования:
EmulateKey(Edit1.Handle, VK_RETURN);
каторый так же никакого результата недал
ассемблера к сожалению незнаю
-
> D3D Window
это Direct 3D? если да, то никак, DirectX использует свои средства засекания клавиш, через свой(помоему) драйвер. Мне в таком случае помогала keybd_event
-
> keybd_event
для активного конечно окна
-
D3D Window - игра RF Online
-
уменя твой верхний пример работает просто беда в том что он нажимает и отпускает(просто мгновенно,кстате почемуто два раза нажимает) и зажатие клавиши несмог реализовать(в асемблере тож нуль)
-
В данном случае задержками :
push 0
push edx
push 0101H //WM_KEYUP
push eax
push 500 //Задержка в ms
push 0
push edx
push 0100H //WM_KEYDOWN
push eax
call PostMessage
call Sleep
call PostMessage
-
В данном случае задержками :
push 0
push edx
push 0101H //WM_KEYUP
push eax
push 500 //Задержка в ms
push 0
push edx
push 0100H //WM_KEYDOWN
push eax
call PostMessage
call Sleep
call PostMessage
-
В данном случае задержками :
push 0
push edx
push 0101H //WM_KEYUP
push eax
push 500 //Задержка в ms
push 0
push edx
push 0100H //WM_KEYDOWN
push eax
call PostMessage
call Sleep
call PostMessage
-
> KiberKot © (10.01.08 20:13) [3]
> D3D Window - игра RF Online
вероятнее всего там использован DirectInput, а это значит ни какими PostMessage/SendMessage и ассемблером клавишу не нажать. Только писать собственную оболочку над DI.
И вообще, во всех играх банят за ботописание :)