DLL中使用keybd_event 问题?
procedure TForm1.Timer1Timer(Sender: TObject);begin
keybd_event(vk_F9,0,0,0);
keybd_event(vk_F9,0,KEYEVENTF_KEYUP,0);
end;
我在DLL里面有个窗口 把DLL注入到目标进程以后Timer1已经启动,(窗口内可以看到),但为什么发送F9没反映呢.我又写了个exe用同样的方法在exe里运行上面的Timer1,结果正常按下了,请问问题出在那?
function HookProc(nCode:Integer;WParam: WPARAM;LParam:LPARAM):LRESULT;stdcall;
form1.Edit1.Text:=form1.Edit1.Text+' ¦'+inttostr(WParam);
我在这里做了个记录结果真的没收到发出去的消息.为什么呢,这个消息要怎么处理呢? 你为何不用postmessage? 试下
keybd_event(vk_F9,0,0,0);
sleep(50);
keybd_event(vk_F9,0,KEYEVENTF_KEYUP,0);
sleep(50); 你的目标程序要是游戏,可以这个游戏屏蔽了,模拟按键函数. 楼上的好象说的不对,如果游戏屏蔽了模拟,那么楼主在EXE文件中也不可能实现模拟按键。
模拟按键必须是焦点窗口才行。你可以试试postmessage
页:
[1]