sendmessage模拟键盘
我想向FC的模拟器发送键盘信息,但是调用sendmessage,FC模拟器没反应 我用的c++
我用spy4win工具发现如果手动用键盘发送的信号是这样的 当然此时模拟器已经是焦点窗口了
256 WM_KEYDOWN 00000031 00020001 00000000 SYSMSGFILTER
258 WM_CHAR 00000031 00020001 00000000 SYSMSGFILTER
273 WM_COMMAND 00008121 00000000 00000000 SYSMSGFILTER
257 WM_KEYUP 00000031 C0020001 00000000 SYSMSGFILTER
我按得是1
如果我用程序来发送上述信号,监控所得为 此时模拟器已经非焦点窗口
256 WM_KEYDOWN 00000031 00020001 00000000 CALLWNDPROCRET
256 WM_KEYDOWN 00000031 00020001 00000000 GETMESSAGE
258 WM_CHAR 00000031 00020001 00000000 CALLWNDPROCRET
258 WM_CHAR 00000031 00020001 00000000 GETMESSAGE
273 WM_COMMAND 00008121 00000000 00000000 CALLWNDPROCRET
273 WM_COMMAND 00008121 00000000 00000000 GETMESSAGE
257 WM_KEYUP 00000031 C0020001 00000000 CALLWNDPROCRET
257 WM_KEYUP 00000031 C0020001 00000000 GETMESSAGE
这是我的代码
printf( "WM_KEYDOWN result=%d\n", SendMessage(tar,WM_KEYDOWN,49,0x20001));
printf( "WM_CHAR result=%d\n", SendMessage(tar,WM_CHAR,49,0x20001));
printf( "WM_COMMAND result=%d\n", SendMessage(tar,WM_COMMAND,0x8121,0));
printf( "WM_KEYUP result=%d\n", SendMessage(tar,WM_KEYUP,49,0xc0020001));
SetWindowTextA(tar,"asdf");
tar为句柄,更改标题是可以的
我不明白的是
1为什么我发了一个信号,spy截获到2条
2手打得和程序发送,为什么截获的消息类型不一样, 手打得是 SYSMSGFILTER 程序发的是CALLWNDPROCRET 和GETMESSAGE
http://down.tgbus.com/soft/26036.shtml 模拟器下载
http://www.lt163.com/soft/mobile/qdcx/200902/1510.html rom
我的环境为win7 64位 vs2012
如果使用按键精灵的话他也是模拟发送键盘信号,当然它发送的时候模拟器是活动窗口,但是它发出的信号此刻钩子类型为SYSMSGFILTER不知道他是怎么模拟的