4

我正在编写一个应用程序,它使用SendMessage.

[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);

我一直在尝试各种参数,我注意到,根据我发送的击键,我必须将不同的参数传递给 parameter int Msg

例如,我将以下定义为Msg.

private static ushort WM_SYSKEYDOWN = 0x0104;
private static ushort WM_CHAR = 0x0102;
private static ushort WM_KEYDOWN = 0x0100;

以及以下传递给第三个参数的测试键wParam

private static ushort VK_F1 = 0x70;
private static ushort VK_A = 0x41;
private static ushort VK_TAB = 0x09;

当我想发送F1密钥 ( VK_F1) 时,它只在使用时有效WM_SYSKEYDOWN,当我想发送A密钥时,它只在我使用时有效WM_CHAR,当我想发送TAB密钥时,它只在我使用时有效WM_KEYDOWN

我的问题是:是否有一些文档可以根据发送的密钥告诉我何时使用WM_KEYDOWN,WM_SYSKEYDOWN等?或者也许我做错了,并且有一种适用于任何键的一致方法?

4

1 回答 1

3

Microsoft 在此键盘输入 (Windows)中解释了这些 WM 消息之间的区别。

WM_SYSKEYDOWN模拟用于切换窗口的ALT+等系统命令。TAB

WM_CHAR例如,模拟用户输入,例如在文本框中输入。

WM_KEYDOWN通常与 . 一起使用WM_KEYUP。请参阅WM_KEYDOWN 消息 (Windows)

您很可能会想要使用WM_CHAR.

于 2012-11-22T14:43:57.493 回答