12

For example , you push Ctrl+V and insert the buffer content into the window. How can I create my own hotkeys like that? Sorry for noobish question.

4

7 回答 7

11

快速轻松地做到这一点的一个好方法是使用专注于宏编程的脚本语言。我最喜欢的是AutoIt,正如它在 AutoIt 帮助文件的剪辑中所说的那样......

AutoIt 最初是为 PC“推出”情况而设计的,以可靠地自动化和配置数千台 PC。随着时间的推移,它已经成为一种强大的语言,支持复杂的表达式、用户函数、循环以及资深脚本编写者所期望的所有其他内容。

在 AutoIt 中编写热键应用程序再简单不过了。例如,假设出于某种原因(难以提及),您可能希望Alt+Q在特定情况下作为数字键盘键 7 做出反应,因此您不必通过键盘进行操作。这是一些执行此操作的代码...

Func _num7()
    Send("{numpad7}")
EndFunc

HotKeySet("!{q}","_num7")

While 1
    sleep(10)
WEnd

如果这还不够直截了当,AutoIt 帮助文件和论坛非常有帮助。更不用说(非常)少数 AutoIt 开发人员可以在 SO 上使用,如果您最终遇到任何 AutoIt 特定问题。

在上面的示例中,假设您只希望在使用特定应用程序时激活热键,以免干扰其他热键。这段代码就可以做到这一点。

; The comment character in AutoIt is ;
Local $inTargetProg = False

Func _num7()
    Send("{numpad7}")
EndFunc

While 1
    If WinActive("Target Application Window Title") and Not $inTargetProg Then
        HotKeySet("!{q}","_num7") ; binds Alt+Q to the _num7() function
        $inWC3 = True
    EndIf

    If Not WinActive("Target Application Window Title") and $inTargetProg Then
        HotKeySet("!{q}") ; UnBind the hotkey when not in use
        $inWC3 = False
    EndIf

    sleep(5)
WEnd
于 2009-06-10T17:22:38.203 回答
5

每个进程的键盘快捷键(如Ctrl+ V)通常在资源 (.rc) 文件中定义,并通过 Win32 API LoadAccelerators加载。

Windows 范围的键盘快捷键(热键)是使用 Win32 API RegisterHotKey 注册的。

于 2009-06-10T17:06:35.070 回答
5

一年以来,我一直在工作中使用AutoHotkey 。

我只是将以下文件保存在我的 Windows 启动文件夹中。

键盘快捷键.ahk

#SingleInstance force
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
Menu, Tray, Icon, Shell32.dll, 44

; Starting Directory for cmd.exe
EnvGet, HOMEDRIVE, HOMEDRIVE
EnvGet, HOMEPATH, HOMEPATH

#i:: Run, notepad
#f:: Run, firefox
#c:: Run, cmd /k, %HOMEDRIVE%%HOMEPATH%
#m:: Run, mailto:
#b:: Run, mailto:boss@mycompany.com

“#b”表示Winkey+B

“运行,mailto:boss@mycompany.com”打开一封黑色的电子邮件给我的老板。

#b:: Run, mailto:boss@mycompany.com
于 2009-06-11T22:37:44.847 回答
2

您可以通过创建快捷方式在 Windows 中创建一个简单的热键,然后为其分配一个快捷键。我这样做是为了启动一些带有参数的命令行应用程序。以下链接说明了如何使用应用程序的快捷键来静音:静音

只需将快捷方式属性中的 Target: 和 Shortcut Key: 替换为您需要的任何内容即可。

于 2009-06-10T23:26:31.650 回答
2

带有窗口的简单脚本,无需第三方软件。只需另存为 .vbs 文件并双击

currentDirectory = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName)))

Set objShell = WScript.CreateObject("WScript.Shell")
Set lnk = objShell.CreateShortcut(currentDirectory  & "search.LNK") 
lnk.TargetPath = currentDirectory  & "search.bat"
lnk.Arguments = ""
lnk.Description = "Abiram's search"
lnk.HotKey = "SHIFT+CTRL+C"
lnk.WindowStyle = "7"
lnk.WorkingDirectory = currentDirectory
lnk.Save
'Clean up 
Set lnk = Nothing

更改 lnk.TargetPath 以包含要调用的 exe 文件或批处理文件。

于 2012-08-16T05:52:11.083 回答
1

好的...最简单的方法,例如在您的桌面上,您可以通过右键单击图标>属性>快捷键来使用加速命令;单击空白区域,似乎什么都没有发生,但这是当您分配我使用的“热键”时Shift+1并且每当我组合Shift+时, 1Firefox 就会打开。

于 2011-05-16T15:38:00.133 回答
0

首先,欢迎来到 Stack Overflow!

其次,这是一个程序一个程序的事情。Ctrl+CCtrl+跨不同程序工作的唯一原因V是操作系统支持剪贴板,并且许多程序遵循使用Ctrl+CCtrl+的约定V。在您自己的程序中,您可以随意绑定键!有关更多详细信息,我们需要有关您的计划的更多信息。

如果您想为 Windows 本身制作实际的热键,我不确定如何(或者您是否能够)制作自己的热键。您可能想查看AutoIt,这是一个免费程序,可以执行您可能想要使用热键执行的各种操作,例如自动单击菜单等。

于 2009-06-10T17:01:38.683 回答