You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何向非前台Windows应用发送指定按键(F9)

如何向非前台Windows应用发送指定按键(F9)

当然可以搞定这个需求!在Windows上给后台程序发送按键指令,有几种实用的方法,我给你拆解清楚:

方法一:用AutoHotkey(推荐,适合普通用户)

AutoHotkey是Windows上超好用的自动化脚本工具,设置简单,几步就能实现你的需求:

  • 先安装AutoHotkey(直接去它的官方网站下载安装包就行)
  • 右键桌面新建一个文本文件,把后缀改成.ahk,然后用记事本打开,粘贴下面的脚本:
; 定义一个函数,用来给指定程序发送按键并切回原窗口
SendKeyToApp(appTitle, key) {
    WinActivate, %appTitle%  ; 暂时激活目标程序
    Send, %key%              ; 发送指定按键
    WinActivate, A           ; 立刻切回之前的活动窗口(比如你的Word)
}

; 设置触发快捷键:比如按下Ctrl+F9就执行发送操作
^F9::
    ; 把这里的"Old Dictation App"换成你听写程序的实际窗口标题
    SendKeyToApp("Old Dictation App", "{F9}")
return
  • 保存脚本后,双击运行它(右下角托盘会出现AutoHotkey的图标)
  • 重点提示:要准确获取你听写程序的窗口标题,可以右键托盘里的AutoHotkey图标,打开「Window Spy」工具,把鼠标放到听写程序窗口上就能看到详细的窗口信息,替换脚本里的标题就行。

这样以后你在Word里写作时,只需要按下Ctrl+F9,后台的听写程序就会收到F9指令开始播放,同时你不用手动切换窗口,直接继续在Word里打字就行!

方法二:用PowerShell脚本(适合喜欢命令行的用户)

如果你习惯用PowerShell,可以写个脚本实现同样的功能:

# 导入Windows API相关的函数
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class SendKeyTool {
    [DllImport("user32.dll")]
    public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    [DllImport("user32.dll")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
    [DllImport("user32.dll")]
    public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
}
"@

# 替换成你的听写程序窗口标题
$targetWindowTitle = "Old Dictation App"
$windowHandle = [SendKeyTool]::FindWindow($null, $targetWindowTitle)

if ($windowHandle -ne [IntPtr]::Zero) {
    # 记录当前活动窗口,之后切回来
    $originalWindow = [SendKeyTool]::SetForegroundWindow($windowHandle)
    # 发送F9按键(虚拟键码0x78):先按下再释放
    [SendKeyTool]::keybd_event(0x78, 0, 0, [UIntPtr]::Zero)
    [SendKeyTool]::keybd_event(0x78, 0, 2, [UIntPtr]::Zero)
    # 切回原来的窗口
    [SendKeyTool]::SetForegroundWindow($originalWindow)
} else {
    Write-Host "找不到目标程序窗口,请检查标题是否正确!"
}

把脚本保存成.ps1文件,运行前需要确保PowerShell允许执行脚本(可以用Set-ExecutionPolicy RemoteSigned命令设置,注意用管理员权限打开PowerShell)。

小结

个人更推荐AutoHotkey方案,不仅操作简单,还能灵活调整快捷键,日常使用更顺手。你可以根据自己的习惯选择合适的方法~

备注:内容来源于stack exchange,提问作者Matteo

火山引擎 最新活动