【发布时间】:2016-03-10 21:17:18
【问题描述】:
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, int wParam, IntPtr lParam);
public void keyPress(){
const uint WM_KEYDOWN = 0x100;
const uint WM_KEYUP = 0x0101;
PostMessage(Process, WM_KEYDOWN, (int)Keys.Q, (IntPtr)Convert.ToInt32("00100001", 16));
Thread.Sleep(1000);
PostMessage(Process, WM_KEYUP, (int)Keys.Q, (IntPtr)Convert.ToInt32("C0100001", 16));
}
我正在尝试使用 Keydown 和 keyup 调用 PostMessage。我知道该过程正在获取消息,因为我正在使用 spy++ 观看消息,并且我发送了相同的 wParam 和 lParams,这些 wParam 和 lParams 是我自己点击窗口上的按钮时引起的。我已经尝试将 SendKeys.sendwait 与 setforeground 一起使用,但同样的问题发生在 spy++ 中出现相同消息但窗口中没有活动响应的情况下。
【问题讨论】:
-
Process是窗口句柄吗? -
抱歉,Process 是从 Processes.MainWindowHandle 抓取的 IntPtr。
标签: c# sendkeys postmessage