SendKeys.Send和Windows键 [英] SendKeys.Send and Windows Key

查看:1055
本文介绍了SendKeys.Send和Windows键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图做一个键盘触发我调用了Windows键+#(#=数字键)快捷键这将启动任务栏上的第n个插槽的应用程序的新实例WinForm应用程序。

I'm trying to make a keyboard trigger for my WinForm application that calls out Windows key + # (# = a number key) shortcut which launches a new instance of the application in the nth slot on the taskbar.

例如,我想运行Photoshop,这是我的任务栏的第一个插槽。

For example, I would like to run Photoshop, which is in the first slot of my taskbar.

WinKey+1

我听说CTRL + ESC替代的,但code以下无法正常工作。

I've heard of the CTRL+ESC alternative, but the code below does not work.

SendKeys.Send("^{ESC}1")

任何其他的选择吗?我是否需要运行这个批处理文件?

Any other alternatives? Do I need to run a batch file for this?

谢谢! :)

推荐答案

CTRL + ESC 不模拟 WIN 键,它只是调用start菜单。

CTRL+ESC does not simulate the WIN key, it just calls the start menu.

P的位/调用总是让每个人都高兴:

A bit of P/Invoke always makes everyone happy:

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);

经测试,它的工作原理。玩得开心!

Tested, it works. Have fun!

这篇关于SendKeys.Send和Windows键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆