In attesa che esista una finestra in Applescript?

5

Sto cercando di lavorare con lo script qui sotto e il ciclo repeat until exists window "Print" non restituisce mai true (non sento mai il beep 3). È questo il modo corretto di aspettare che appaia una finestra?

Sto utilizzando il Controllo accessibilità e questo è il nome corretto della finestra di dialogo di stampa.

# Saves current document open in EverNote as PDF
#
activate application "Evernote"
tell application "System Events"
    tell process "EverNote"
        # Open the print dialog
        beep 1
        keystroke "p" using command down

        # Wait until the Print dialog opens before proceeding
        repeat until exists window "Print"
        end repeat

        # Expand the "PDF" menu button (must be expanded before the menu is referencable)
        beep 3

        click menu button "PDF" of window "Print"
        # Wait until the Menu button menu is created before proceeding
        repeat until exists menu item "Save as PDF…" of menu 1 of menu button "PDF" of window "Print"
        end repeat
        # Select the "Save as PDF" menu item
        click menu item "Save as PDF…" of menu 1 of menu button "PDF" of window "Print"

        # Wait until the Save dialog opens before proceeding
        repeat until exists window "Save"
        end repeat

        # Paste the contents of the clipboard in and Save
        # This is sorta hack; Probably best to leave the 'Save As" dialog open and let the user finish it off but I have a special purpose
        if (get (the clipboard) is not "") then
            set value of text field 1 of window "Save" to get (the clipboard) & ".pdf"
        end if
        click button "Save" of window "Save"

    end tell
end tell
    
posta No Grabbing 21.02.2014 - 16:51
fonte

1 risposta

6

Mi sembra di aver risolto il problema principale del problema "attesa per la finestra". I "tell" apparentemente annidati non sono così buoni, quindi ho risolto questo problema specificando il processo che possiede un particolare elemento dell'interfaccia utente:

repeat until window "Print" of process "Evernote" exists

Non ho ancora risolto il problema inserendo la data corrente nel campo del nome del file "Salva", ma domani è un altro giorno! Ecco lo script completo:

activate application "Evernote"
tell application "System Events"

    # Open the print dialog
    keystroke "p" using command down

    # Wait until the Print dialog opens before proceeding
    repeat until window "Print" of process "Evernote" exists
    end repeat

    click menu button "PDF" of window "Print" of process "Evernote"

    # Wait until the Menu button menu is created before proceeding
    repeat until exists menu item "Save as PDF…" of menu 1 of menu button "PDF" of window "Print" of process "Evernote"
    end repeat

    # Select the "Save as PDF" menu item
    click menu item "Save as PDF…" of menu 1 of menu button "PDF" of window "Print" of process "Evernote"

    # Wait until the Save dialog opens before proceeding
    repeat until exists window "Save" of process "Evernote"
    end repeat

    set theDate to current date

    #tell (current date) to get (it's month as integer) & "-" & day & "-" & (it's year as integer)
    #set the clipboard to result as text

    #set myDate to result as text
    #set the clipboard to "dog" as text
    #if (get (the clipboard) is not "") then
    #set value of text field 1 of sheet "Save" of process "Evernote" to get (the clipboard) & ".pdf"
    #end if

    set value of text field of sheet "Save" of process "Evernote" to "dog" & ".pdf"
    # Paste the contents of the clipboard in and Save
    # This is sorta hack; Probably best to leave the 'Save As" dialog open and let the user finish it off but I have a special purpose

    # click button "Save" of window "Save" of process "Evernote"


end tell
    
risposta data 22.02.2014 - 00:57
fonte

Leggi altre domande sui tag