Machen Sie einen Screenshot des Fensters auf dem Mac, ohne die Leertaste zu verwenden, und klicken Sie dann mit der Maus

Ich möchte einen Screenshot von einem Fenster auf einem Mac machen.

Ich benutze derzeit shift+ cmd+ 4dann spaceMausklick.

Der Prozess ist sehr umständlich, Sie müssen es in dieser Reihenfolge tun, oder Sie müssen es noch einmal wiederholen.

Ich möchte eine einfache Tastenkombination, um was zu tun shift+ cmd+ 3.

Ich möchte eine möglichst einfache Verknüpfung zum Erstellen eines Screenshots eines Fensters verwenden.

Ist es möglich?

Antworten (3)

Hier ist meine Lösung, die ich Window-Snapshot genannt habe , basierend auf einem sehr einfachen AppleScript , das entweder als Anwendung im Skripteditor gespeichert oder als Teil eines Automator-Dienstes mit zugewiesener Tastenkombination verwendet wird. Obwohl es sich um einen Dienst handelt, verwendet es das Dienstprogramm eines Drittanbieters, das in der unten beschriebenen One*-Mausklick-Lösung der Windows-Snapshot AppleScript- Anwendung verwendet wird.

  • Hinweis: Automator, der als Dienst verwendet wird , ist an sich eine nette Funktion, aber wenn er mit einer globalen Tastenkombination verwendet wird, kann er problematisch sein, es sei denn, die verwendete Tastenkombination ist sowohl verwendbar als auch nicht an anderer Stelle in OS X oder anderen geöffneten Anwendungen , deren Fenster verwendet wird soll eingefangen werden. Aus diesem Grund habe ich die Verwendung von AppleScript sowohl als AppleScript-Anwendung als auch als Automator-Dienst mit zugewiesener Tastenkombination aufgenommen. Während einige Tastenkombinationen einem Automator-Dienst zugewiesen sindfunktioniert mit den meisten Anwendungsfenstern, funktioniert jedoch möglicherweise nicht mit einigen, selbst wenn diese Tastenkombination nicht der Anwendung des erfassten Fensters zugewiesen ist. In solchen Fällen kann die AppleScript-Anwendung Window-Snapshot über den Automator-Dienst verwendet werden .

Als AppleScript-Anwendung

Dies kann entweder als Zwei-Mausklick-Lösung ( Standardeinstellung ) oder als Ein*-Mausklick-Lösung eingerichtet werden .

  • * Hinweis: Als Ein-Maus-Klick-Lösung erfordert es die Verwendung eines Dienstprogramms eines Drittanbieters namens CLICLICK . Soweit ich weiß, gibt es in AppleScript kein direktes Ereignis mit gedrückter Maustaste/linker Maustaste und daher die Verwendung eines Dienstprogramms eines Drittanbieters oder anderweitig die Verwendung von zusätzlichem Code als dem, was bereits präsentiert wird, um Methoden einzusetzen, die andere Ressourcen verwenden, native und oder Drittanbieter.

Als Lösung mit zwei Mausklicks wird das AppleScript als Anwendung gespeichert. Ich habe es als Fenster-Schnappschuss in Anwendungen gespeichert und es dann im Dock platziert , indem ich das Anwendungspaket per Drag & Drop auf das Dock gezogen habe , wo ich es haben wollte.

  • Was ich an der Zwei-Mausklick-Lösung mag, ist, wenn auf die Dock-Kachel der Window-Snapshot- Anwendung geklickt wird, ist es buchstäblich so, als hätte ich manuell gedrückt shift- command- 4dann auf der Tastatur und jetzt muss ich nur noch mit der Maus über das ZielSpace bar fahren Fenster, das ich erfassen möchte, und klicken Sie dann mit der Maus darauf. Also eine Zwei-Mausklick-Lösung ! Diese Methode ermöglicht das Drücken der Taste zum Abbrechen, genau wie es die manuell gedrückte Tastenkombination getan hätte. Es ist auch nicht auf die Verwendung eines Dienstprogramms eines Drittanbieters und eines zweiten angewiesenescdelayBefehl als Timer, um das Positionieren des Mauszeigers zu ermöglichen, bevor er abläuft, und nimmt automatisch den Snapshot auf, der in der Ein-Maus-Klick-Lösung verwendet wird . Allein die Zwei-Mausklick-Lösung ist die einfachste Lösung, die hier vorgestellt wird.

Als Ein-Maus-Klick-Lösung wird das AppleScript als Anwendung gespeichert und das Drittanbieter-Dienstprogramm CLICLICK wird dem Anwendungspaket hinzugefügt und der entsprechende Code wird im Skript auskommentiert.

  • Hinweis: Die Ein-Maus-Klick-Lösung verwendet einen zweiten delayBefehl, um Zeit zum Positionieren des Mauszeigers an einer beliebigen Stelle über dem zu erfassenden Zielfenster zu haben, und es spielt keine Rolle, ob das Fenster das oberste Fenster ist oder nicht, wenn der zweite Befehl ausgeführt delaywird Mal aus, über welchem ​​Fenster sich die Maus befindet, das ist dasjenige, das im Schnappschuss aufgenommen wurde. Die Erfassung kann abgebrochen werden, indem die escTaste gedrückt wird, bevor der zweite delayBefehl abläuft .

Als Automator-Dienst mit Tastaturkürzel

Als Automator-Dienst wird er mit dem ApplesScript- Code erstellt , leicht modifiziert, und dem Dienst wird eine Tastenkombination zugewiesen unter: Systemeinstellungen > Tastaturkürzel > Dienste

  • Hinweis: Die von mir zugewiesene Tastenkombination ist shift- command- 5oder ⇧⌘5, was logisch erschien, und das Fenster, über dem sich die Maus befindet, wird vom Schnappschuss erfasst. Das Fenster muss nicht vollständig sichtbar sein, um erfasst zu werden, oder das oberste Fenster sein.

Window-Snapshot AppleScript-Code

tell application "System Events"

    (* Note: If used as the default two mouse-click solution then use as is, nothing else needs to be done. *)

    keystroke "$" using {command down}
    delay 0.25
    keystroke space

    (* Note: If using as the one mouse-click solution or Automator Service, uncomment the 
    two lines below having double-dashes in front by removing the double-dashes. 
    Also when using as the one mouse-click solution, set a value on the 'delay' command 
    below to an appropriate value which allows you the time necessary to move the mouse  
    over the target window before that delay command times out and the snapshot is taken.
    The default of '1.5' is in this use case is a somewhat arbitrary value, set it to suite.

    Note: When using as an Automator Service set the 'delay' command below to '0.25', 
    the same as in the first 'delay' command. *)

    -- delay 1.5
    -- do shell script "/Applications/Window-Snapshot.app/Contents/Resources/cliclick c:."

end tell
  • Hinweis: Wie Sie sehen können, gibt es beim ersten Befehl einen 0.25zweiten Wert, , diese kurze Verzögerung ist notwendig, da zwischen den beiden Befehlen eine Verzögerung liegen muss . Wenn Sie die Ein-Maus-Klick-Lösung verwenden, muss der zweite Befehl realistischer sein. Stellen Sie einen Wert ein, der Ihnen erlaubt, die Maus über das Zielfenster zu bewegen, bevor der Verzögerungsbefehl abläuft, z. B. usw.delay 0.25delaykeystrokedelay1.5

Erstellen der Window-Snapshot-Anwendung

  1. Öffnen Sie den Skript-Editor (oder ggf. den AppleScript-Editor ).

  2. Kopieren Sie den Window-Snapshot AppleScript Code und fügen Sie ihn von oben in das Unbenannte Dokumentfenster ein und drücken Sie dann Compile .

  3. Drücken Sie Szum Speichern und stellen Sie das Dateiformat: auf Anwendung ein , um es im Anwendungsordner zu speichern .

  4. Geben Sie dem Window-Snapshot- Anwendungspaket ein benutzerdefiniertes Symbol. Ich habe ein Symbol einer Kamera verwendet, das bei Find Icons gefunden wurde , und dieses insbesondere verwendet , indem ich auf die Schaltfläche „ICNS herunterladen“ klickte. Ich habe die heruntergeladene Datei "scanners_cameras.icns" in der Vorschau geöffnet und sie kopiert und dann in das Blatt Get Info der Window-Snapshot.app eingefügt , indem ich zuerst das kleine Symbol in der oberen linken Ecke des Window-Snapshot-Infoblatts ausgewählt habe . (Wählen Sie in Anwendungen die Window-Snapshot.app aus und drücken Sie: I)

  5. Ziehen Sie nun das Window-Snapshot- Anwendungspaket per Drag & Drop aus dem Anwendungsordner auf das Dock , wo Sie es haben möchten.

Es kann jetzt verwendet werden, klicken Sie auf die Window-Snapshot Dock Tile und dann auf das Zielfenster, das erfasst werden soll.

  • Hinweis: Die Schnappschüsse werden mit denselben Benennungs- und Speicherorteinstellungen gespeichert, als ob ⇧⌘3 gedrückt worden wäre, nur um nur die Zielfenster zu speichern. Die Standardeinstellung ist auf dem Desktop mit Screen Shot yyyy-mm-dd at hh.mm.ss AM|PModer wenn die Standardeinstellung geändert wurde, wird sie auf die aktuelle Einstellung geändert.

Einrichten der Window-Snapshot.app als One*-Mausklick-Lösung mit CLICLICK

  1. Laden Sie CLICLICK herunter , hängen Sie die Datei cliclick.dmg ein und platzieren Sie eine Kopie der cliclickausführbaren Datei im Anwendungspaket Window-Snapshot.app unter dem im Skript angegebenen Pfad. Klicken Sie bei gedrückter Strg-Taste auf die Window-Snapshot- App, wählen Sie Paketinhalt anzeigen und navigieren Sie zum Ordner „Ressourcen“ , indem Sie dort eine Kopie der cliclickausführbaren Datei platzieren.

  2. Entkommentieren Sie die beiden Zeilen unter den (* Note: If using as the one mouse-click solution or Automator Service,Kommentaren, indem Sie die doppelten Bindestriche, --, vor dem Code entfernen.

  3. Speichern Sie die am AppleScript vorgenommenen Änderungen .

Es kann jetzt als Ein-Maus-Klick-Lösung verwendet werden .

Erstellen des Window-Snapshot Automator-Dienstes

  1. Öffnen Sie Automator und wählen Sie Service aus .

  2. Setzen Sie Service empfängt ausgewählt auf keine Eingabe und belassen Sie es in jeder Anwendung unverändert. Fügen Sie ein Run AppleScript hinzu und kopieren Sie dann den Window-Snapshot AppleScript Code oben und fügen Sie ihn in das Run AppleScript- Fenster ein, wobei der Standardcode überschrieben wird.

  3. Kommentieren Sie die beiden Zeilen unter den (* Note: If using as the one mouse-click solution or Automator Service,Kommentaren aus, indem Sie die doppelten Bindestriche , --vor dem Code entfernen, und setzen Sie den Wert des zweiten delayBefehls auf 0.25.

  4. Speichern Sie den Dienst , indem SSie ihn als Window-Snapshot benennen .

  5. Öffnen Sie die Systemeinstellungen und navigieren Sie zu Tastatur > Tastaturkürzel > Dienste und scrollen Sie nach unten, dann sehen Sie unter Allgemein Fenster-Schnappschuss und wählen Sie es aus. Klicken Sie nun auf Verknüpfung hinzufügen und drücken Sie shift- command- 5oder: ⇧⌘5

Es kann jetzt als Dienst mit der Tastenkombination ⇧⌘5 verwendet werden

  • Hinweis: Wenn Sie es nur als Dienst verwenden möchten, müssen Sie den Pfadnamen der cliclickausführbaren Datei an den Ort anpassen, an dem Sie sie installiert haben. Sie könnten versuchen, es in das Dienstepaket unter aufzunehmen, zB /Users/$USER/Library/Services/Window-Snapshot.workflow/Contents, obwohl ich dies nicht versucht habe, da ich es sowohl als AppleScript- Anwendung, die es als Zwei-Mausklick-Lösung verwendet , als auch als Automator-Dienst mit zugewiesener Tastenkombination mag.

Abschließend möchte ich sagen, dass dieses sehr einfache AppleScript sicherlich erweitert werden kann, um zusätzliche Funktionen sowohl als Anwendung als auch als Dienst hinzuzufügen, dh Hinzufügen von Code zum Speichern des Schnappschusses unter anderen Namen und Orten usw., wie auch immer ich es tun werde Überlassen Sie es Ihnen, dies zu ändern, wenn Sie dies wünschen.

Es funktioniert perfekt, ⇧⌘5 und es spart, Ihre Lösung wird vielen Menschen helfen. Danke schön.
@Paul, froh, dass Sie es verwenden können. Ich verwende eine andere Version. der AppleScript-App und hat den Code hier nicht eingefügt, da er eine andere ausführbare Datei eines Drittanbieters verwendet. Die zweite ausführbare Datei wird aufgerufen checkModifierKeysund tut, was der Name andeutet, und ich habe sie so codiert, dass, wenn ich die Umschalttaste drücke, wenn ich auf die Dock-Kachel klicke, die Taste disable-shadowin der .plist-Datei der Bildschirmaufnahme umgeschaltet wird, sodass ich problemlos Schnappschüsse ohne Schlagschatten machen kann . Beide ausführbaren Dateien habe ich aus dem Quellcode erstellt, den die Autoren bereitgestellt haben, obwohl beide die Binärdateien bereitstellen. Wenn Sie interessiert sind, lassen Sie es mich wissen, ich werde die Antwort aktualisieren.

Ein Ansatz wäre die Verwendung des screencaptureBefehls:

screencapture -w window.png

Dadurch wird das erste Fenster erfasst, auf das Sie klicken, nachdem Sie den Befehl ausgeführt haben, und es als window.png.

Es gibt verschiedene Möglichkeiten, diesen Befehl an eine Tastenkombination zu binden, z. B. indem Sie einen Automator-Dienst erstellen, der ihn als Shell-Skript ausführt , oder indem Sie einen Launcher eines Drittanbieters wie Alfred verwenden . In jedem Fall möchten Sie dem Prozess wahrscheinlich auch einige Smarts hinzufügen, die jedes Mal einen anderen Dateinamen auswählen, damit Sie Ihren vorherigen Screenshot nicht ständig überschreiben.

Ich kenne keinen einfachen Weg, um immer nur das vorderste Fenster zu erfassen ... vielleicht kann ein AppleScript-Guru dabei helfen?

Wo wurde die window.png gespeichert? auch mit dieser Methode mit Terminal; Ich muss immer noch mit der Maus klicken, das macht es einfacher, und ich werde mir Automator und Alfred ansehen, danke.
Mit dem obigen Befehl wird es in dem Ordner gespeichert, von dem aus Sie den Befehl ausgeführt haben. Wenn Sie beispielsweise immer auf dem Desktop speichern möchten, können Sie diesen Ort als Teil des Dateinamens angeben, z. B. 'screencapture -w ~/Desktop/window.png'. Ja, schätzen Sie, dass ein Mausklick immer noch erforderlich ist ... konnte bisher keinen Weg finden, dies zu umgehen.

Warum nicht einfach erweiterte Diktierbefehle aktivieren und dann einen neuen Sprachbefehl erstellen? Im Beispiel unten habe ich einen Sprachbefehl erstellt, der einen Screenshot macht, wenn ich „Grab Picture“ sage. Umgehen Sie die Tastatur vollständig LOL

Geben Sie hier die Bildbeschreibung ein