Copia lo screenshot negli appunti oltre a salvare il file

4

All'interno di OS X 10.11.6, la combinazione di tasti Cmd ⌘ Shift ⇧ 4 salva uno screenshot sul desktop per impostazione predefinita.

C'è un modo per copiare automaticamente il file negli Appunti (oltre a salvare il file), in modo che lo screenshot possa essere incollato in un documento? Forse ci sono alcuni intelligenti motivi per inserire e collegare l'immagine negli appunti?

L'intento è:

  1. salva lo screenshot in un file e
  2. copia lo screenshot negli appunti

con un comando singolo . Gli esempi sono sempre apprezzati.

    
posta gatorback 09.01.2018 - 17:35
fonte

1 risposta

4

Quello che segue è un esempio di quello che farei, se avessi bisogno di entrambi, per inserire una schermata negli appunti e salvalo come un file allo stesso tempo.

Io userei Automator per creare un servizio flusso di lavoro , a cui potrebbe essere assegnata una scorciatoia da tastiera , per eseguire uno script AppleScript per fare in modo che questi due eventi avvengano insieme l'uno con l'altro.

In Automator , crea un nuovo servizio con le seguenti impostazioni:

  • Il servizio riceve (nessun input) in (qualsiasi applicazione)
  • Aggiungi a Esegui AppleScript azione , sostituendo il codice di default
    con l'esempio AppleScript codice mostrato di seguito:
  • Salva il servizio di automazione come, ad es. Schermata su Appunti e file
  • Assegna un collegamento , in Preferenze di sistema > Tastiera > Scelte rapide > servizi :
    • Schermata su Appunti e file ⇧⌘5

Ora quando premi ⇧⌘5 il cursore a crocino appare come se avessi premuto ⇧⌘4 , tuttavia dopo aver effettuato il < em> selection normalmente e rilasciando il mouse, l'area selezionata viene copiata negli appunti e salvata in un file su il desktop .

La convenzione di denominazione dei file è quella del macOS predefinito per Schermate salvate normalmente, nella mia regione . Potrebbe essere necessario regolare la seguente riga di codice perché sia come nella tua regione:

set theDateTimeNow to (do shell script "date \"+%Y-%m-%d at %l.%M.%S %p\"")

Nella mia regione, questo comando produce il seguente esempio di output in cui il valore della theDateTimeNow variabile sarebbe, ad esempio:

2018-01-13 at 12.04.30 PM

Tra la riga di codice sopra e le due linee che seguono nello script , producono, ad esempio:

Screen Shot 2018-01-13 at 12.04.30 PM.png

Nel Terminale , dai un'occhiata alla pagina man per date e strftime , per fare aggiustamenti per formattare la data e l'ora valore della theDateTimeNow variabile , se necessario o richiesto.

Nota: leggi i commenti in example AppleScript code così come per capire cosa sta facendo lo script .

Questo è stato testato in macOS 10.13.1 e ha funzionato senza problemi.

Esempio codice AppleScript :

on run {input, parameters}

    --  # Screen Shot to Clipboard and File

    --  # Clear the clipboard so the 'repeat until isReady ...' loop works properly.

    set the clipboard to ""

    --  # Copy picture of selected area to the clipboard, press: ⌃⇧⌘4
    --  # Note that on my system I need to keystroke '$' instead of '4'.
    --  # I assume this is because the 'shift' key is being pressed.        

    tell application "System Events"
        keystroke "$" using {control down, shift down, command down}
    end tell

    --  # Wait while user makes the selection and releases the mouse or times out.
    --  # Note that the time out also acts as an escape key press of sorts. In other
    --  # words, if the user actually presses the escape key it has no effect on this
    --  # script like it would if pressing the normal shortcut outside of the script.
    --  #       
    --  # As coded, the time out is 5 seconds. Adjust 'or i is greater than 10' and or  
    --  # 'delay 0.5' as appropriate for your needs to set a different length time out.
    --  # This means, as is, you have 5 seconds to select the area of the screen you
    --  # want to capture and let go of the mouse button, otherwise it times out.

    set i to 0
    set isReady to false
    repeat until isReady or i is greater than 10
        delay 0.5
        set i to i + 1
        set cbInfo to (clipboard info) as string
        if cbInfo contains "class PNGf" then
            set isReady to true
        end if
    end repeat
    if not isReady then
        --  # User either pressed the Esc key or timed out waiting.
        return  --  # Exit the script without further processing.
    end if

    --  # Build out the screen shot path filename so its convention is of 
    --  # the default behavior when saving a screen shot to the Desktop.

    set theDateTimeNow to (do shell script "date \"+%Y-%m-%d at %l.%M.%S %p\"")
    set theFilename to "Screen Shot " & theDateTimeNow & ".png"
    set thePathFilename to POSIX path of (path to desktop folder as string) & theFilename

    --  # Retrieve the PNG data from the clipboard and write it to a disk file.

    set pngData to the clipboard as «class PNGf»
    delay 0.5
    try
        set fileNumber to open for access thePathFilename with write permission
        write pngData to fileNumber
        close access fileNumber
    on error eStr number eNum
        try
            close access fileNumber
        end try
        activate
        display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with title "File I/O Error..." with icon caution
    end try

    --  # Convert the POSIX path filename to an alias.

    set thePathFilename to POSIX file thePathFilename as alias

    --  # Hide the file extension as is the default.

    tell application "Finder"
        try
            set extension hidden of thePathFilename to true
        end try
    end tell

end run

Nota: l' esempio AppleScript codice sopra è proprio quello, e include l'errore include la gestione di non include nessun altro che possa essere appropriato / necessario / voluto, l'onere è sull'utente di aggiungere qualsiasi gestione degli errori per qualsiasi codice di esempio presentato e o codice scritto da se stesso.

    
risposta data 13.01.2018 - 04:59
fonte

Leggi altre domande sui tag