AutoHotkey: desplazamiento de dos documentos PDF

AutoHotkey: desplazamiento de dos documentos PDF

Estoy intentando crear un script que desplace todos los documentos PDF abiertos al mismo tiempo. El problema es que no puedo hacer que funcione a menos que nombre específicamente cada ventana que debe desplazarse y le envíe las acciones. Además, en el estado actual necesito capturar el evento de desplazamiento en otra ventana (por ejemplo, el Bloc de notas), pero en realidad esto está bien ya que es posible que también desee desplazar algunos de los archivos PDF manualmente y luego reanudar el desplazamiento sincrónico.

Aquí está mi flujo de trabajo:

  1. Abra 2 o más documentos PDF.
  2. Abra un archivo del Bloc de notas y comience a desplazarse hacia el archivo del Bloc de notas.

Resultado: todos los archivos PDF abiertos comienzan a desplazarse.

Aquí está mi código (tomado de 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

En este momento funciona para desplazarse solo por un PDF.

¿Cómo puedo hacer para que mire y se desplace por todos ellos?

Respuesta1

Encontré la solución:

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

Ahora funciona. Necesitas Adobe Acrobat Reader (o Acrobat Pro, algo con Acrobat) y el Bloc de notas.

Cómo funciona:

  1. Abra los archivos PDF que desea desplazar sincrónicamente.

  2. Abra una ventana del Bloc de notas (esta será la ventana de control para que también pueda desplazar los archivos PDF de forma autónoma (cada uno por separado). La ventana del Bloc de notas se puede cambiar de tamaño a un tamaño realmente pequeño.

  3. Haga clic en la ventana del Bloc de notas y desplácese.

Cada PDF se selecciona y se desplaza a medida que se desplaza en la ventana del Bloc de notas. Seleccione cada PDF manualmente si desea desplazarlo solo.

Respuesta2

Aquí hay una solución más simple que no requiere una ventana de bloc de notas. Es posible que deba cambiar el título de la ventana de "Adobe Reader" al título que tenga una ventana de Acrobat. Esto recorre todas las ventanas llamadas "Adobe Reader" y presiona CTRL-SHIFT-N para incrementar el número de página.

SetTitleMatchMode 2 ; Match anything with Adobe Reader anywhere in the title
WinGet, id, list,Adobe Reader,, Program Manager

    this_id := id1 ; Activate the first window, and find the current page number
    WinActivate, ahk_id %this_id%
    WinWaitActive, ahk_id %this_id%


Send, {CTRLDOWN}N{CTRLUP}
Sleep, 30
WinGetText, text  ; 

StringSplit, word_array, text, `n  ; The current page number is on the 3rd line of returned text
nextpage := word_array3
nextpage += 1  ; Increment and store the current page number

Send, %nextpage%{ENTER}
Sleep, 30


Loop, %id%  ; now loop through the rest of the windows and set each to the same page.
{
    this_id := id%A_Index%
    WinActivate, ahk_id %this_id%
    WinWaitActive, ahk_id %this_id%
    Send, {CTRLDOWN}N{CTRLUP}
    Sleep, 30
    Send, %nextpage%{ENTER}
    Sleep, 30

}

Respuesta3

Solo quería mencionar que probé el script de Brett Bymaster del 28 de febrero de 2014 y funcionó perfectamente.

Luego hice una modificación, cambiando "WheelDown" a "PgDn" y "WheelUp" a "PgUp" en todo momento; esto me permitió usar las teclas PgUp y PgDn para desplazarme por una página a la vez, en lugar de usar la rueda del mouse para desplazarme unas cuantas. líneas a la vez, que es exactamente lo que estaba buscando. Pude revisar un par de archivos PDF muy rápidamente y verificar visualmente que eran prácticamente idénticos y detectar en qué se diferenciaban.

La capacidad que proporciona este enfoque de hacer clic en las ventanas individuales de Adobe para desplazar los documentos por separado es excelente, porque (1) tuve algunos casos en los que el desplazamiento sincronizado se interrumpió en una página (probablemente presionando la tecla demasiado rápido :) y esto me permitió para volver a sincronizarlo y (2) puede seleccionar secciones similares de 2 archivos PDF diferentes que no necesariamente se alinean en la misma página y compararlos.

¡Buen material y gracias!

información relacionada