yq_ryan 发表于 2011-3-28 09:30:47

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);
我在这里做了个记录结果真的没收到发出去的消息.为什么呢,这个消息要怎么处理呢?

深白海豚 发表于 2011-3-28 09:31:15

你为何不用postmessage?

超级渔翁 发表于 2011-3-28 09:31:23

试下

keybd_event(vk_F9,0,0,0);
sleep(50);
    keybd_event(vk_F9,0,KEYEVENTF_KEYUP,0);
sleep(50);

三木目 发表于 2011-3-28 09:31:33

你的目标程序要是游戏,可以这个游戏屏蔽了,模拟按键函数.

余辉脉脉 发表于 2011-3-28 09:31:45

楼上的好象说的不对,如果游戏屏蔽了模拟,那么楼主在EXE文件中也不可能实现模拟按键。
模拟按键必须是焦点窗口才行。你可以试试postmessage
页: [1]
查看完整版本: DLL中使用keybd_event 问题?