C# SendMessage,正在尝试发送F4

C# SendMessage,正在尝试发送F4,c#,C#,我的SendMessage签名: [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam); 要获取窗口句柄,请从要向其发送消息的进程中找到MainWindowHandle: whandle = MemClass.Process.MainWindowHandle; 在这里,我试图向该进程窗口发送消息:(0x73=F4键)

我的SendMessage签名:

[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
要获取窗口句柄,请从要向其发送消息的进程中找到MainWindowHandle:

whandle = MemClass.Process.MainWindowHandle;
在这里,我试图向该进程窗口发送消息:(0x73=F4键)

它显然给出了错误,因为我将最后2个参数作为int而不是IntPtr发送:

IntPtr wParam, IntPtr lParam
通过此调用进行测试:

SendMessage(whandle, 0x73, IntPtr.Zero, IntPtr.Zero);
0个错误,但未将F4发送到窗口


如何正确调用此函数?我想将F4发送到进程窗口。

第二个参数是消息,而不是键,如:keyup(0x100)或keydown(0x101)

第三个参数是键0x73(F4)


可能
IntPtr.Zero
?不工作,0个错误,但它没有将F4发送到窗口您是否尝试阅读SendMessage()的文档。第二个参数是您试图发送的消息。F4不是消息。这是一把钥匙。至少,您需要使用键发送
WM\u KEYDOWN
,然后是
WM\u keydup
。或者你可以用
SendInput
的正确方法来做,你可以通过搜索这个网站找到使用的示例。谢谢你,肯,我读到了这个:SendInput对我的目的不好,因为我必须将输入发送到最小化的窗口是的。该链接表示第二个参数是
UINT msg
,它也是一条消息,而不是一个键。消息的键值编码在WPARAM中。它后面还需要有
WM\u KEYUP
.Focus,然后是
SendKeys.Send()
?例子:
SendMessage(whandle, 0x73, IntPtr.Zero, IntPtr.Zero);
SendMessage(whandle, 0x100, 0x73, IntPtr.Zero);
SendMessage(whandle, 0x101, 0x73, IntPtr.Zero);