20 votes

Copie de la capture d'écran dans le presse-papiers en plus de l'enregistrement du fichier

Dans OS X 10.11.6, la fonction Cmd Shift 4 permet d'enregistrer une capture d'écran sur le bureau par défaut.

Existe-t-il un moyen de copier automatiquement le fichier dans le presse-papiers (en plus de l'enregistrement du fichier), afin de pouvoir coller la capture d'écran dans un document ? Peut-être existe-t-il un moyen astucieux de "tee" et de "pipe" l'image vers le presse-papiers ?

L'objectif est de :

  1. enregistrer la capture d'écran dans un fichier et
  2. copier une capture d'écran dans le presse-papiers

avec un simple commande. Les exemples sont toujours appréciés.

16voto

user3439894 Points 52496

Ce qui suit est un exemple de ce que je ferais, si j'avais besoin des deux, pour placer un capture d'écran sur le presse-papiers et le sauvegarder comme un fichier en même temps.

J'utiliserais Automator pour créer un Service 1 flux de travail à laquelle un raccourci clavier pourrait être attribué, pour exécuter un AppleScript script de faire en sorte que ces deux événements se produisent en conjonction l'un avec l'autre.

En Automator , créer une nouvelle Service 1 avec les paramètres suivants :

  • Le service reçoit (aucune entrée) dans (toute application)
  • Ajouter a Exécuter AppleScript action en remplacement de la valeur par défaut code
    avec le exemple AppleScript code présenté plus loin :
  • Sauvez le site Automator Service 1 comme, par exemple : Capture d'écran vers le presse-papiers et le fichier
  • Affecter a raccourci en Préférences du système > Clavier > Raccourcis > Services :
    • Capture d'écran vers le presse-papiers et le fichier      5 2

Maintenant, quand vous appuyez sur 5 2 le site curseur en forme de croix apparaît comme si vous aviez appuyé sur 4 Cependant, après avoir fait le sélection comme d'habitude et en relâchant la souris, le zone sélectionnée est à la fois copié dans le presse-papiers et sauvegardé dans un fichier sur le Bureau .


Mise à jour de MacOS Mojave :

  • 1 En <strong>MacOS Mojave </strong>, a <em>Service </em>en <strong>Automator </strong>est désormais appelé <em>Action rapide </em>alors sélectionnez-la.
  • 2 Par défaut, <strong>5 </strong>en <strong>MacOS Mojave </strong>est attribué à une nouvelle fonctionnalité de capture d'écran, alors essayez <strong>6 </strong>à la place.

El convention d'appellation des fichiers est celle de la MacOS par défaut pour Captures d'écran sauvegardé normalement, dans ma région. Vous devrez peut-être ajuster la ligne suivante de code pour qu'il soit comme dans votre région :

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

Dans ma région, cette commande produit l'exemple de sortie suivant, où l'option valeur de la theDateTimeNow variable serait, par exemple :

2018-01-13 at 12.04.30 PM

Entre la ligne de code ci-dessus et les deux lignes qui la suivent dans le fichier script ils produisent, par exemple :

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

En Terminal Jetez un coup d'œil à la page de manuel pour les deux date y strftime afin d'effectuer des ajustements pour formater la date et l'heure. valeur de la theDateTimeNow variable selon les besoins ou les envies.

Nota: Lire l'article commentaires tout au long de la exemple AppleScript code afin de comprendre ce que le script fait.

Ceci a été testé sous MacOS 10.13.1 et a fonctionné pour moi sans problème.


Exemple AppleScript code :

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: Le site exemple AppleScript code ci-dessus est juste cela, et sans l'inclusion traitement des erreurs ne comprend pas d'autres éléments qui pourraient être appropriés/besoins/souhaités, il incombe à l'utilisateur d'ajouter tout autre élément. gestion des erreurs pour tout exemple de code présenté et ou code écrit par soi-même.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X