Matrix 首页推荐

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


不知道你是否经历过这样的场景,在使用翻页笔翻页你所要演讲的 PPT 时,电脑某个程序弹了一个窗口,导致 PPT 放映的窗口处于未活动的状态,翻页笔失灵,于是你不得不用鼠标点一下放映窗口;又或者当台上的演讲者拿着翻页笔演讲时,你需要对电脑做一些其他的操作,但是这样会影响台上的人翻页。

有的翻页笔装有驱动程序可以解决这个问题,但问题是这类的翻页笔都比较贵。而在现有硬件基础上,其实有软件解决方案——AutoHotkey。

AutoHotkey 如何解决问题?

AutoHotkey (AHK) 是一个免费开源的 Windows 脚本语言工具,主要用于自动化重复性任务、创建自定义快捷键(热键)、模拟鼠标键盘操作,并能处理窗口管理。

我让 AI 写了一个 AutoHotkey 的脚本,功能是捕获翻页笔对应的键盘按键,然后直接发送到相应的进程(PowerPoint 或者 WPS)中,从而能够在任何时候都能进行翻页,即使在放映窗口处于未活动的状态。

操作流程

1. 下载安装 AutoHotkey(只有Windows版本)。

2. 在电脑本地新建一个 demo.ahk(自行命名)文本文档,用记事本编辑。如果是 PowerPoint,则复制粘贴以下代码:

#Requires AutoHotkey v2.0

; 获取正在运行的 PowerPoint 应用
GetPPT() {
    try {
        return ComObjActive("PowerPoint.Application")
    } catch {
        return
    }
}

; 判断是否正在放映
IsSlideShowRunning(ppt) {
    try {
        return ppt.SlideShowWindows.Count > 0
    } catch {
        return false
    }
}

; 下一页
PPT_Next() {
    ppt := GetPPT()
    if !ppt
        return
    if IsSlideShowRunning(ppt)
        ppt.SlideShowWindows(1).View.Next()
}

; 上一页
PPT_Prev() {
    ppt := GetPPT()
    if !ppt
        return
    if IsSlideShowRunning(ppt)
        ppt.SlideShowWindows(1).View.Previous()
}

; —— 绑定翻页键 —— 
$PgDn::PPT_Next()
$PgUp::PPT_Prev()

如果是 WPS,则复制粘贴以下代码:

#Requires AutoHotkey v2.0

; 获取正在运行的 WPS 演示应用
GetWPS() {
    try {
        return ComObjActive("KWPP.Application")
    } catch {
        return
    }
}

; 获取当前放映窗口
GetWPSSlideShowWindow(wps) {
    try {
        if wps.SlideShowWindows.Count > 0
            return wps.SlideShowWindows(1)
    } catch {
        return
    }
}

; 判断是否正在放映
IsSlideShowRunning(wps) {
    try {
        return wps.SlideShowWindows.Count > 0
    } catch {
        return false
    }
}

; 切换到放映窗口
ActivateSlideShowWindow(wps) {
    slideShowWindow := GetWPSSlideShowWindow(wps)
    if slideShowWindow {
        ; 激活放映窗口
        slideShowWindow.Activate()
    }
}

; 下一页
WPS_Next() {
    wps := GetWPS()
    if !wps
        return
    if IsSlideShowRunning(wps) {
        ActivateSlideShowWindow(wps)  ; 确保窗口被激活
        wps.SlideShowWindows(1).View.Next()
    }
}

; 上一页
WPS_Prev() {
    wps := GetWPS()
    if !wps
        return
    if IsSlideShowRunning(wps) {
        ActivateSlideShowWindow(wps)  ; 确保窗口被激活
        wps.SlideShowWindows(1).View.Previous()
    }
}

; —— 绑定翻页键 —— 
$PgDn::WPS_Next()
$PgUp::WPS_Prev()

3. 测试翻页笔的按键对应键位,可用在线网站测试。

  • 如果是对应键盘的 PageUp 和 PageDown 键位,那么上面的代码不用修改;
  • 如果是对应左右方向键位,则需要把最后的两行代码修改替换,用记事本即可编辑。
; —— 绑定翻页键 —— 
$Right::PPT_Next()
$Left::PPT_Prev()

4. 打开一个 PPT 文件,放映,确认翻页笔正常可用。

5. 运行 AutoHotkey,然后双击 demo.ahk,此时任务栏右下角会出现绿色的图标。

6. 让放映窗口处于非活动状态(可按下Win键),翻页笔翻页测试是否能翻页。

7. 设置开机启动,Win + R → 输入 shell:startup → 回车,把 demo.ahk 文件移动/复制到打开的文件夹。

注:我已经上传了 .ahk 文件到 GitHub,不想复制粘贴,可以直接跳转手动下载

注意事项

添加白名单

部分杀毒软件会对.ahk 文件(特别是对下载的.ahk 文件)进行拦截隔离,需要添加白名单。

保护性视图问题

PowerPoint 会对从网络(浏览器等)下载的 PPT 文件启用的保护模式,打开界面会提示风险「保护性视图」,在此模式下,会影响翻页笔的正常翻页,因为 AutoHotkey 拦截了翻页笔的按键,但是无法发送到 PowerPoint 进程,导致翻页笔「失控」。

解决方案:在确认下载下来的文件是安全的情况下,在提示风险界面点击「启用编辑」,或者在资源管理器中,右键 PPT 文件,选择属性,在选项卡「解除保护」框打勾✔

> 关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀

5
4