【问题标题】:How to create a hotkey to open a file in windows如何创建热键以在 Windows 中打开文件
【发布时间】:2021-10-09 12:42:07
【问题描述】:

我正在创建一个应用程序,我希望当用户打开我的应用程序时,它应该为自己创建一个热键,例如 ctrl + alt + f 以便每次用户按下这些键时应用程序都会自动运行组合。

我知道如何通过右键单击应用程序并添加组合键在 Windows 中手动实现这一点,但我不知道如何以编程方式实现这一点,因为我不希望用户这样做自己做。

【问题讨论】:

  • 我相信注册和注销热键只能通过 Windows API 以编程方式使用,因此您需要将 Pinvoke 与 VBS 或 C# 一起使用,然后如果您计划使用该类型,则该类型可用于 PowerShell关于编写 PowerShell 脚本。有一个 VB 示例here,您或许可以从中获得一些启发。
  • @Ash,您可以使用 PowerShell 中的 COM 使用热键创建快捷方式文件;见下文。

标签: windows powershell


【解决方案1】:

您可以通过编程方式创建一个快捷方式文件 (*.lnk),该文件指向您的应用程序可执行文件,该文件还允许定义调用热键。

以下示例在您的桌面上创建MyApp.lnk,它启动记事本,可选地通过热键Ctrl+Alt+F;热键立即生效:

  • 警告:只有保存到选择目录的快捷方式文件才能确保其热键定义持久生效,即重启后继续工作。 (当前用户的)桌面可以工作 - 我不清楚其他目录也可以工作。
# Get the Desktop dir. path.
$desktopDir = [Environment]::GetFolderPath('Desktop') 

# Create the shortcut object, initially in-memory only.
$shc = 
  (New-Object -ComObject 'Wscript.Shell').CreateShortcut("$desktopDir\MyApp.lnk") 

# Set the target executable (name will do if in $env:PATH).
# If arguments must be passed, use the separate .Arguments property (single string)
$shc.TargetPath = 'notepad.exe' 

# Assign the hotkey.
$shc.Hotkey = 'Ctrl+Alt+F'

# Save to disk (using the initially specified path).
$shc.Save() 

查看WshShortcut COM object的文档,上面创建了一个实例。

【讨论】:

  • 我有一个问题。该脚本需要 4-5 秒才能使用热键打开所需的应用程序。你能告诉我如何加快这个速度吗?当我启动我的电脑时,它在几秒钟内运行得很快,但随后它就变得迟钝了。好像 5 秒太长了,写应用程序...
  • 我很遗憾听到这个消息,@Abhaysalvi - 不幸的是,我无法解释。您确定是热键机制使其变慢,还是应用程序本身在启动时变慢?无论哪种方式,这听起来都是一个单独的问题(我在测试中没有看到这一点,无论您以交互方式还是以编程方式分配热键都不应该有所作为),所以我鼓励您提出一个新问题。
  • 啊,这是同一个记事本应用程序。感谢您的回答!
  • 检查我的编辑 1 和 2:stackoverflow.com/questions/69574360/… 你是对的。只是我的电脑……
  • @Abhaysalvi,是的,这是答案中也说明的限制。我不知道该行为记录在哪里,以及除了桌面之外还有哪些其他特殊文件夹(如果有)支持带有热键的快捷方式文件持久(即,在重新启动时)。务实地说,不只是支持任何文件夹是有道理的,因为系统必须扫描整个硬盘驱动器才能找到所有热键。
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 2013-10-21
  • 2017-01-27
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多