读书人

sendmessage向其余程序发送模拟按键无

发布时间: 2013-08-23 15:57:36 作者: rapoo

sendmessage向其他程序发送模拟按键无效


procedure TForm1.Button1Click(Sender: TObject);
var H: HWND;
begin
h := findwindow(nil, 'VisualBoyAdvance');
if H > 0 then //如果找到密码输入窗体
begin
label1.Caption := '已找到窗体';
SendMessage(h,WM_KEYDOWN,VK_F12,0);
end;
end;


一段简单代码,向VBA模拟器发送模拟按键F12(功能是游戏截图),也试过postmessage,可总是无效,请各位帮帮忙。

VBA模拟器链接:
http://disland.emu-zone.org/emu/vba.zip
超级马里奥游戏ROM链接
thunder://QUFmdHA6Ly9yb21zNjE4OnJvbXM2MThAcm9tczMuZW11NjE4LmNvbToyMzcvemhhbmdqaS9nYmEvYWxsc2V0LzIzNTggLSBDaGFvamkgTWFsaW91IFNoaWppZSAoQykuemlwWlo=

[解决办法]
findwindow(nil, 'VisualBoyAdvance');//VisualBoyAdvance是窗口的标题。而不是其它。
[解决办法]
试试
SendMessage(h, WM_KEYDOWN, VK_F12, 1+MapVirtualKey(VK_F12, 0) shl 16);
[解决办法]
引用:

procedure TForm1.Button1Click(Sender: TObject);
var H: HWND;
begin
h := findwindow(nil, 'VisualBoyAdvance');
if H > 0 then //如果找到密码输入窗体
begin
label1.Caption := '已找到窗体';
SendMessage(h,WM_KEYDOWN,VK_F12,0);
end;
end;


一段简单代码,向VBA模拟器发送模拟按键F12(功能是游戏截图),也试过postmessage,可总是无效,请各位帮帮忙。

VBA模拟器链接:
http://disland.emu-zone.org/emu/vba.zip
超级马里奥游戏ROM链接
thunder://QUFmdHA6Ly9yb21zNjE4OnJvbXM2MThAcm9tczMuZW11NjE4LmNvbToyMzcvemhhbmdqaS9nYmEvYWxsc2V0LzIzNTggLSBDaGFvamkgTWFsaW91IFNoaWppZSAoQykuemlwWlo=


首先你确定是否label1.Caption已变为'已找到窗体',如果已变了,说明已找到Handle;
然后试下这句:PostMessage(h,WM_CHAR,VK_F12,0);
[解决办法]
试下这个:PostMessage(h,WM_IME_CHAR,VK_F12,0);
[解决办法]
可以下载个sndkey32.pas,调用AppActivate,然后SendKeys("{F12}")试试
------解决方案--------------------


如果这程序是用directinput处理按键,那自然是不接受任何按键消息sendmessage向其余程序发送模拟按键无效
[解决办法]


[解决办法]
学习 多少

读书人网 >.NET

热点推荐