c# - Windows 开始键的 Sendkeys

标签 c# sendkeys

我正在尝试使用 Sendkeys 来模拟 Windows 启动键,但我尝试过的选项都不起作用,有人知道如何实现吗?

代码

    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private Thread thrTyping;

    private void startThread()
    {
        ThreadStart ts = new ThreadStart(sendKeys);
        thrTyping = new Thread(ts);
        thrTyping.Start();
    }

    private void sendKeys()
    {
       // TEST 1
       Thread.Sleep(5000);
       SendKeys.SendWait("(^)"+"{ESC}");           

       // TEST 2
       Thread.Sleep(5000);
       SendKeys.SendWait("{LWin}");
    }

最佳答案

使用keybd_event相反:

private const int KEYEVENTF_EXTENDEDKEY = 0x1;
private const int KEYEVENTF_KEYUP = 0x2;

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);

private static void PressKey(byte keyCode)
{
    keybd_event(keyCode, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
    keybd_event(keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}

List of KeyCodes (你要找的那个是 0x5B - left win key)

关于c# - Windows 开始键的 Sendkeys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24132775/

相关文章:

c# - 好奇的用户在应用程序处于后台进程时按键,如何忽略这种类型的额外按键

Python pywinauto 输入符号或原始按键输入

c# - EF Core 5 中的种子拥有类型

c# - 从驱动器读取部分大文件

c# - CS0029(类型不匹配)与 switch 语句的奇怪情况

在 vscode 中调试 C# 源代码生成器

c# - 有什么方法可以在不选择它的情况下从另一个程序复制文本吗?

c# - .NET Core 如何以独立于操作系统的方式获取所有时区和信息

excel - 发送 key 和应用程序激活

batch-file - 需要在批处理文件中模拟 Win 键