我正在尝试为我的WinForm应用程序创建一个键盘触发器,该应用程序调用Windows键+#(#=数字键)快捷方式,该快捷方式在任务栏的第n个插槽中启动应用程序的新实例.
例如,我想运行Photoshop,它位于我的任务栏的第一个插槽中.
WinKey+1
Run Code Online (Sandbox Code Playgroud)
我听说过CTRL + ESC替代方案,但下面的代码不起作用.
SendKeys.Send("^{ESC}1")
Run Code Online (Sandbox Code Playgroud)
还有其他选择吗?我需要为此运行批处理文件吗?
谢谢!:)
use*_*016 13
CTRL+ESC不模拟WIN键,它只是调用开始菜单.
一点P/Invoke总能让每个人都开心:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
你这么称呼它:
KeyboardSend.KeyDown(Keys.LWin);
KeyboardSend.KeyDown(Keys.D4);
KeyboardSend.KeyUp(Keys.LWin);
KeyboardSend.KeyUp(Keys.D4);
Run Code Online (Sandbox Code Playgroud)
测试,它的工作原理.玩得开心!
| 归档时间: |
|
| 查看次数: |
13206 次 |
| 最近记录: |