在.NET中为可执行文件快捷方式设置热键

在.NET中为可执行文件快捷方式设置热键,.net,vb.net,keyboard-shortcuts,hotkeys,.net,Vb.net,Keyboard Shortcuts,Hotkeys,我有以下代码(基于 Private Sub SetHotkey(文件路径为字符串) 常量ssfPROGRAMS=2'程序文件 将MyShell设置为Shell32.Shell=新Shell32.Shell 将MyFolder设置为Shell32.Folder=MyShell.NameSpace(ssfPROGRAMS) 如果(MyFolder不是空的),那么 将MyFolderItem设置为Shell32.FolderItem=MyFolder.ParseName(文件路径) 如果(MyFold

我有以下代码(基于

Private Sub SetHotkey(文件路径为字符串)
常量ssfPROGRAMS=2'程序文件
将MyShell设置为Shell32.Shell=新Shell32.Shell
将MyFolder设置为Shell32.Folder=MyShell.NameSpace(ssfPROGRAMS)
如果(MyFolder不是空的),那么
将MyFolderItem设置为Shell32.FolderItem=MyFolder.ParseName(文件路径)
如果(MyFolderItem不是空的),那么
Dim MyShellLink作为ShellLinkObject=MyFolderItem.GetLink
如果(MyShellLink不是什么)那么
MyShellLink.Hotkey=
MyShellLink.Save()
如果结束
MyShellLink=无
如果结束
MyFolderItem=无
如果结束
端接头
但是,我不确定要将哪个值作为热键。例如,如果我想执行Ctrl+Alt+A,我将输入什么值?(我认为Ctrl+Alt是6,但我不知道如何输入字符键)。

下面是如何操作的

基于这一点,我认为这里发生了一些无聊的事情

比如说


(90 |)(3链接页面上写着:

虚拟键盘快捷键位于低位字节,修改器标志位于高位字节。修改器标志可以是以下值的组合

在中找到您的密钥。这将进入低阶字节。在您的示例中,A的值为0x41,或十进制65

对于高阶字节,修饰符为shift、ctrl、alt和extended;分别等于1、2、4和8。将要使用的值相加,在本例中为ctrl+alt=6。然后将其乘以256,将其上移一个字节。这等于1536

添加65+1536=1601。这是ctrl+alt的热键+ 另一个例子:

MyShellLink.Hotkey = MakeWord(Keys.A, HotKeyModifiers.Control Or HotKeyModifiers.Alt)
使用:

Public Enum HotKeyModifiers
    Shift = 1
    Control = 2
    Alt = 4
    Extended = 8
End Enum

Public Function MakeWord(ByVal loByte As Byte, ByVal hiByte As Byte) As Short
    Return Convert.ToInt16(loByte Or (hiByte << 8))
End Function
公共枚举热键修饰符
移位=1
控制=2
Alt=4
扩展=8
结束枚举
公共函数MakeWord(ByVal-loByte为字节,ByVal-hiByte为字节)为短
返回Convert.ToInt16(loByte或(hiByte
Public Enum HotKeyModifiers
    Shift = 1
    Control = 2
    Alt = 4
    Extended = 8
End Enum

Public Function MakeWord(ByVal loByte As Byte, ByVal hiByte As Byte) As Short
    Return Convert.ToInt16(loByte Or (hiByte << 8))
End Function