C# 我有一个c代码来打开/关闭键盘led。我想知道代码的工作原理
这是我想熟悉的代码:C# 我有一个c代码来打开/关闭键盘led。我想知道代码的工作原理,c#,C#,这是我想熟悉的代码: public partial class Form1 : Form { [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo); const int KEYEVENTF_EXTENDEDKEY = 0x1; const int KEYEVENTF_KEYUP =
public partial class Form1 : Form
{
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,
UIntPtr dwExtraInfo);
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
const int CAPSLOCK = 0x14;
const int NUMLOCK = 0x90;
const int SCROLLLOCK = 0x91;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
keybd_event(CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
keybd_event(CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
}
}
从msdn网站:
keybd_事件函数合成击键。系统可以使用这样的
生成WM_KEYUP或WM_KEYDOWN消息的合成击键。
键盘驱动程序的中断处理程序调用keybd_事件
功能
KEYEVENTF\u EXTENDEDKEY
和KEYEVENTF\u KEYUP
是标志。通过使用flag1 | flag2 | flag3
可以传递多个标志
也许最重要的部分是:
注意:此功能已被取代。改用SendInput
这段代码没有什么需要理解的。它只是调用来模拟capslock键事件……不清楚您的意思。理解代码的问题到底在哪里?难道你不知道常数是什么吗?你不知道外部的吗。。。我不知道这个函数是如何工作的。我指的是值0x1、0x2等。UIntPtr的目的是什么以及| gate是如何工作的。