基本上,我想在代码中模拟用户点击Windows键。我知道有SendKeys可以让我发送按键到Windows,但我无法确定需要获取哪些内容才能发送Windows键命令。例如,Windows键 + L。经过一番研究,似乎CTRL-ESC也应该弹出开始菜单,但不确定如何将其发送给Windows(如果可能的话)。非常感谢您的帮助。
用户通过WinKey快捷方式执行的一些操作可以以其他方式进行编程。以您的WinKey+L示例为例,您可以改用以下语句:
Process.Start("rundll32.exe", "user32.dll,LockWorkStation");
using System.Runtime.InteropServices;
using System.Windows.Forms;
static class KeyboardSend
{
[DllImport("user32.dll")]
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
private const int KEYEVENTF_EXTENDEDKEY = 1;
private const int KEYEVENTF_KEYUP = 2;
public static void KeyDown(Keys vKey)
{
keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY, 0);
}
public static void KeyUp(Keys vKey)
{
keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
}
以这种方式使用:
KeyboardSend.KeyDown(Keys.LWin);
KeyboardSend.KeyDown(Keys.D4);
KeyboardSend.KeyUp(Keys.LWin);
KeyboardSend.KeyUp(Keys.D4);