AutoHotkey - 滚动两个 PDF 文档

Mir*_*a M 6 pdf autohotkey adobe-acrobat

我正在尝试制作一个同时滚动所有打开的 PDF 文档的脚本。问题是,除非我专门命名每个必须滚动的窗口并将操作发送给它,否则我无法让它工作。此外,在当前状态下,我需要在另一个窗口(例如:记事本)中捕获滚动事件,但这实际上没问题,因为我可能还想手动滚动一些 PDF,然后恢复同步滚动。

这是我的工作流程:

  1. 打开 2 个或更多 PDF 文档。
  2. 打开记事本文件并开始滚动到记事本文件。

结果:所有打开的 PDF 开始滚动。

这是我的代码(从interwebz借来的:)

WheelDown::
SetTitleMatchMode, 2
IfWinActive, Notepad ; Replace 'SafariTitle' by the title of the safari windows
{
        CoordMode, Mouse, Screen
        WinGet, active_id, ID, A
        IfWinExist, Adobe
        {
                Send {WheelDown}
                WinActivate ; Automatically uses the window found above.
                Send {WheelDown}
                Send {WheelDown}
                WinActivate, ahk_id %active_id%
        }

}
Else
{
        Send {WheelDown}
}
return

WheelUp::
SetTitleMatchMode, 2
IfWinActive, Notepad ; Replace 'SafariTitle' by the title of the safari windows
{
        CoordMode, Mouse, Screen
        WinGet, active_id, ID, A
        IfWinExist, Adobe
        {
                Send {WheelUp}
                WinActivate ; Automatically uses the window found above.
                Send {WheelUp}
                Send {WheelUp}
                WinActivate, ahk_id %active_id%
        }
        }
        Else
        {
                Send {WheelUp}
        }
return
Run Code Online (Sandbox Code Playgroud)

现在它只适用于滚动一个 PDF。

我怎样才能让它查看和滚动所有这些?

Mir*_*a M 3

找到了解决方案:

WheelDown::
SetTitleMatchMode, 2
IfWinActive, Notepad ;
{
        CoordMode, Mouse, Screen
    WinGet, active_id, ID, A        
    WinGet, id, list, Adobe,, Program Manager
        Loop, %id%
    {
        Send {WheelDown}
            this_id := id%A_Index%
            WinActivate, ahk_id %this_id%
            Send {WheelDown}
            Send {WheelDown}
            WinActivate, ahk_id %active_id%
        }

}
Else
{
        Send {WheelDown}
}
return

WheelUp::
SetTitleMatchMode, 2
IfWinActive, Notepad ;
{
        CoordMode, Mouse, Screen
        WinGet, active_id, ID, A
        WinGet, id, list, Adobe,, Program Manager
        Loop, %id%
    {
        Send {WheelUp}
            this_id := id%A_Index%
            WinActivate, ahk_id %this_id%
            Send {WheelUp}
            Send {WheelUp}
            WinActivate, ahk_id %active_id%
        }
        }
        Else
        {
                Send {WheelUp}
        }
return
Run Code Online (Sandbox Code Playgroud)

现在可以了。您需要 Adob​​e Acrobat Reader(或 acrobat Pro,带有 acrobat 的东西)和记事本。

怎么运行的:

  1. 打开您想要同步滚动的 PDF。

  2. 打开一个记事本窗口(这将是控制窗口,因此您还可以自主滚动 PDF(每个单独)。记事本窗口的大小可以调整得非常小。

  3. 单击记事​​本窗口并滚动。

当您在记事本窗口中滚动时,每个 PDF 都会被选中并滚动。如果您想单独滚动每个 PDF,请手动选择它。