Cha*_*son 1 c# winapi visual-studio-2010
我在c#中编写了一些测试代码(使用WPF Form)来检查sendMessage/PostMessage是否有效.这是:
Process x = Process.GetProcessesByName("Any Apps")[0];
if (x == null) return;
MessageBox.Show(x.Id.ToString()); // always works
NativeMethods.SendMessage(x.MainWindowHandle, 0x100, 0x70, 0);//F1
NativeMethods.SendMessage(x.MainWindowHandle, 0x101, 0x70, 0);
Run Code Online (Sandbox Code Playgroud)
在任何地方查找进程工作,但是当我使用VS调试密钥运行应用程序时,sendingMessage/postingMessage从未起作用.有时我从桌面启动程序时有效,有时则不行.但是......有趣的是:在任何可用的机器上(带有XP的VM,另一台带有64位Windows 7的计算机,带有32位Windows 7的朋友计算机)可以快速而精细地工作.
有谁有同样的问题?Maby有人知道解决方案吗?提前致谢.
SendMessage并且PostMessage工作正常 - 但在Windows中发送击键并不像你想象的那么简单.只是发送WM_KEYDOWN和WM_KEYUP消息发送输入是不可靠的.消息正在发送,但是您发送给它的窗口忽略它们.
F1的命令通常被实现为发送消息的键盘加速器WM_COMMAND - 我并不认为假冒WM_KEYDOWN和WM_KEYUP消息会触发它们.