PixPin
Einstellungen

Skripte

Erstellen Sie PixPin-Skripte für Screenshots und Pins. Lernen Sie JavaScript-Syntax, API-Parameter, Konstanten, Systemunterschiede und die Fehlersuche.

PixPin-Skripte rufen mit JavaScript Aufnahme-, Pin- und Fensterfunktionen auf. Speichern Sie wiederholte Schritte als Aktion und starten Sie diese per Taste, Tray-Menü oder Befehlszeile. Skripte ist ein Handbuchkapitel; der Editor liegt unter Konfiguration → Tastenkombinationen/Aktionen.

  • Aktives Fenster aufnehmenAufnehmen und kopieren in einer Aktion.
  • Fester AufnahmebereichPosition und Größe wiederverwenden.
  • Referenzbilder zusammen öffnenDateiliste übergeben und gesammelt anheften.
Speichern Sie wiederkehrende Abläufe als Skript und weisen Sie eine Tastenkombination oder einen Tray-Menüeintrag zu. Alle Inhalte sind fiktiv.

Geeignete Aufgaben

BedarfHilfe durch das Skript
Immer denselben Bereich aufnehmenPosition und Größe fixieren oder einen Bereich gegebener Größe am Zeiger erzeugen
Weniger WerkzeugklicksNach Auswahl direkt kopieren, anheften, speichern oder erkennen
Manuelle Auswahl vermeidenAktives Fenster, Bildschirm am Zeiger oder letzten Bereich direkt aufnehmen
Täglich dieselben Referenzdateien öffnenMehrere Pins aus einem Array von Dateipfaden erstellen
Andere Werkzeuge anbindenSkripttext oder .js-Datei per Befehlszeile ausführen

Für Tasten, Tray-Einträge oder Ausnahmen genügt Tastenkombinationen/Aktionen. Skripte eignen sich für kombinierte Abläufe und bestimmte Parameter.

Erstes Skript erstellen und ausführen

Die Vorlage füllt Name und Skript aus; Linien ersetzen hier den Skripttext. Aktivieren Sie den Tray-Eintrag, wenden Sie die Änderung an und legen Sie die Tastenkombination in der Liste fest.

Öffnen Sie Konfiguration → Tastenkombinationen/Aktionen, wählen Sie Neue Aktion hinzufügen und eine passende Voreinstellung, etwa Screenshot und... → Screenshot und anheften.

Vergeben Sie einen eindeutigen Namen und prüfen oder ändern Sie Skript. Diese Zeile startet die Aufnahme und heftet nach Bestätigung der Auswahl an.

pixpin.screenShot(ShotAction.Pin);

Klicken Sie auf Skript testen, führen Sie eine echte Aufnahme durch und prüfen Sie das Ergebnis. Bei Fehlschlag erscheint eine Fehlermeldung.

Wählen Sie Anwenden und weisen Sie in der Liste Tasten zu. Mit Tray-Menü ist auch das Menü nutzbar.

Tests führen wirklich aus. Eine andere Vorlage überschreibt den Editor; Abbrechen macht getestete Vorgänge nicht rückgängig. Integrierte Skripte sind gesperrt; erstellen Sie für Varianten eine eigene Aktion.

Per Befehlszeile ausführen

Nach -r folgt Text, nach -f ein Skriptpfad. Eine laufende Instanz erhält die Anfrage; beim ersten Start wartet die Ausführung auf die Initialisierung.

Windows PowerShell: Ersetzen Sie den Programmpfad durch Ihren Installationsort:

& 'D:/Apps/PixPin/PixPin.exe' -r 'pixpin.screenShot(ShotAction.Copy);'
& 'D:/Apps/PixPin/PixPin.exe' -f 'D:/Scripts/capture.js'

macOS-Terminal: Die Beispiele gehen von einer Installation im Programme-Ordner aus:

"/Applications/PixPin.app/Contents/MacOS/PixPin" -r 'pixpin.screenShot(ShotAction.Copy);'
"/Applications/PixPin.app/Contents/MacOS/PixPin" -f '/Users/yourname/Scripts/capture.js'

Die Datei enthält nur JavaScript ohne Markdown-Begrenzer. Bei chinesischen Zeichen wird UTF-8 mit BOM empfohlen. Für lange Skripte reduziert -f Probleme mit Anführungszeichen, Backslashes und $. Pfade mit Leerzeichen bleiben in Anführungszeichen.

Die Rückkehr des Befehls bedeutet nicht, dass Aufnahme, Erkennung oder Speichern abgeschlossen sind. Der Wert des letzten Ausdrucks wird nicht strukturiert zurückgegeben. Automatisierte macOS-Aufrufe zeigen für interaktive Aufnahmen keine Berechtigungsanleitung; erlauben Sie Bildschirmaufnahme und Bedienungshilfen vorher in der App.

Syntax und Ausführung

Das Feld akzeptiert JavaScript. API- und Konstantennamen unterscheiden Groß-/Kleinschreibung: pixpin.screenShot, nicht pixpin.screenshot.

KategorieÜbliche unterstützte Formen
Variablen und Datenvar, let, const; Zahlen, Strings, boolesche Werte, Arrays, Objekte, null
Bedingungen und Schleifenif / else, switch, for, while, for...of, break
Funktionen und Klassenfunction, Pfeilfunktionen, Parameter, return, class; kein direktes return außerhalb einer Funktion
AusdrückeArithmetik, Vergleiche, &&, ||, !, ternäre Ausdrücke, Template-Strings, Destrukturierung, ??
DatenverarbeitungIntegrierte Objekte wie Array, String, Math, Date, JSON, Map, Set
Ausnahmentry / catch / finally, throw new Error(...)

Die aktuelle Umgebung unterstützt weder ?. noch async/await und in normalen Skripten kein import / export. Verwenden Sie if für Nullprüfungen und PixPin-APIs für mehrstufige Abläufe.

Browserobjekte window, document, fetch, Node.js-Objekte require, process, fs und setTimeout fehlen. Übernehmen Sie keine Beispiele mit Web-, Node.js- oder Paketabhängigkeiten. Ein normales Objekt ersetzt auch nicht das von einer API verlangte Rechteck.

Reihenfolge wartet nicht auf Handbedienung

Anweisungen laufen nacheinander, das Öffnen der Aufnahme startet sie aber nur und wartet nicht auf Ihre Auswahl. Für Aufnahme mit Anheften verwenden Sie pixpin.screenShot(ShotAction.Pin) statt zweier aufeinanderfolgender Aufrufe für Aufnahme und Zwischenablage-Pin.

  • Nach der Auswahl ausführenscreenShot: Bereich wählen, dann kopieren oder anheften.
  • Bereich vorgeben, sofort aufnehmendirectScreenShot: bekannter Bereich, keine manuelle Auswahl.
Beide Methoden können Bilder kopieren, aber zu unterschiedlichen Zeitpunkten. Der gestrichelte Rahmen erklärt nur den Skriptbereich und erscheint nicht bei der Ausführung.

Die Engine wird wiederverwendet. Halten Sie temporäre Variablen in Funktionen, um Einflüsse zwischen Läufen zu vermeiden. Mehrzeilige Beispiele verwenden sofort ausgeführte Funktionen:

(function () {
  var width = 640;
  var height = 480;
  var rect = pixpin.genRectUnderCursor(width, height);
  pixpin.directScreenShot(rect, ShotAction.Copy);
})();

Das abschließende () führt sofort aus. Eine Endlosschleife zum Warten blockiert den UI-Thread. console.log(...) schreibt Protokolle, der Editor hat aber keine interaktive Konsole.

Globale Objekte, Parameter und Rückgaben

Name:Aufgabe
pixpinAufnahme-, Pin-, Verzögerungs-, Fenster- und System-APIs aufrufen
ShotActionAktion nach Aufnahme wählen, etwa ShotAction.Copy
PixConstSpezialbereich wählen, etwa PixConst.SpRectActiveWindow

Zahlen, boolesche Werte und Strings direkt angeben, Dateilisten als String-Array. Absolute Pfade werden empfohlen: D:/Images/example.png oder mit maskierten Backslashes D:\\Images\\example.png.

Erzeugen Sie Rechtecke mit diesen drei APIs und reichen Sie sie unverändert weiter:

AufrufBedeutung
pixpin.genRect(x, y, width, height)Bildschirmposition und Größe festlegen
pixpin.genRectUnderCursor(width, height)Bereich um den Zeiger erzeugen und passend auf dem Bildschirm platzieren
pixpin.getSpRect(type)Spezialbereich lesen; type verwendet eine PixConst-Konstante

Es gelten logische Bildschirmkoordinaten mit positiver Breite und Höhe. Bei mehreren Bildschirmen sind negative Koordinaten möglich. Bei Platzmangel verkleinert genRectUnderCursor proportional. Anzeigeskalierung und Speicheroptionen beeinflussen die ausgegebenen Pixel. Übergeben Sie nicht {x: 100, y: 100, width: 640, height: 480}; daraus entsteht kein gültiger Aufnahmebereich.

true bedeutet meist Annahme der Anfrage, nicht abgeschlossene Bedienung. Die Tabellen erläutern die Rückgaben. APIs ohne Rückgabe erlauben keine Erfolgskontrolle des Speicherns.

Anpassbare Beispiele

Aktives Fenster aufnehmen und kopieren

Bringen Sie das Zielprogramm nach vorn und starten Sie per globaler Kombination. Die Aufnahme erfolgt sofort ohne Auswahl.

pixpin.directScreenShotSpRect(
  PixConst.SpRectActiveWindow,
  ShotAction.Copy
);

Bei Skript testen kann das Einstellungsfenster aktiv sein. Wenden Sie die Aktion an und testen Sie aus dem Zielprogramm.

Bereich vorgeben und manuell anpassen

Starten Sie die normale Aufnahme und setzen Sie (100, 100) mit 640 × 480. Markierungen und Bereichsanpassung bleiben möglich.

(function () {
  if (pixpin.screenShotAndEdit()) {
    pixpin.setScreenShotRect(100, 100, 640, 480);
    pixpin.setScreenShotRectRadius(4 / 3);
  }
})();

setScreenShotRectRadius setzt trotz des Namens das Seitenverhältnis, nicht den Eckenradius. Entfernen Sie die letzte Zeile ohne festes Verhältnis.

Direkt aufnehmen und mit Zeitstempel speichern

Das Beispiel erfasst den Bildschirm am Zeiger. Ändern Sie vorher den Speicherpfad; macOS erlaubt etwa /Users/yourname/Pictures/....

(function () {
  var rect = pixpin.getSpRect(PixConst.SpRectScreenUnderMouse);
  pixpin.directScreenShotAndSaveTo(
    rect,
    "D:/Captures/PixPin_$yyyy-MM-dd_HH-mm-ss$.png"
  );
})();

Die Speicherfunktion ersetzt Zeitvariablen; siehe Pfad- und Dateinamenvariablen. Doppelte Namen erhalten Nummern, ohne Speicherbenachrichtigung. Weder Pfad noch Erfolgskennzeichen werden zurückgegeben.

Mehrere Referenzdateien anheften

Ersetzen Sie die Array-Pfade durch vorhandene Dateien und ergänzen Sie bei Bedarf weitere Einträge.

(function () {
  var files = [
    "D:/Reference/layout.png",
    "D:/Reference/colors.png"
  ];
  if (!pixpin.pinFromFiles(files)) {
    throw new Error("没有找到可贴出的文件,请检查路径。");
  }
})();

Fehlende Dateien werden übersprungen; ein leeres Array oder keine vorhandenen Pfade ergibt false. true bedeutet Übergabe an die Pin-Funktion, nicht Bilddarstellung jedes Formats.

Drei Sekunden warten und aufnehmen

Die einfachste Form mit abbrechbarem Countdown:

pixpin.delayScreenShotWithTips(3);

Für Position und Größe folgt diese API. Reihenfolge: Sekunden, Position vorgegeben, x, y, Größe vorgegeben, Breite, Höhe, reservierter Parameter, Seitenverhältnis.

pixpin.delayScreenShot(3, true, 100, 100, true, 640, 480, 0, 4 / 3);

Zustand mit derselben Aktion umschalten

Kehren Sie den Deaktivierungszustand um: laufende globale Tasten pausieren und beim nächsten Drücken wieder aktivieren.

pixpin.disableShortcuts(!pixpin.isDisableShortcuts());

Diese Aktion kann die ausdrückliche Pause aufheben; Ausnahmen und Windows-Vollbildspiele gelten weiterhin.

API-Übersicht

Nutzeroperationen für normale Aktionsskripte. rect stammt aus einer Rechteck-API, action aus ShotAction. Eckige Klammern markieren optionale Parameter und gehören nicht in den Code.

Aufnahme und Bereiche

APIParameter und Aufgabe
screenShot(action)Auswahl starten und danach action ausführen. Boolesche Rückgabe; bei offener Aufnahme, genutzter Langaufnahme oder fehlenden Rechten kann false folgen
screenShotAndEdit()Entspricht screenShot(ShotAction.Edit) und zeigt danach die Symbolleiste
screenShotAndCopy()Entspricht screenShot(ShotAction.Copy)
screenShotAndPin()Entspricht screenShot(ShotAction.Pin)
screenShotAndCopyOcr()Entspricht screenShot(ShotAction.CopyOcrText); erkennen und Text kopieren
openCustomScreenShot()Eigene/verzögerte Aufnahme zur manuellen Einrichtung öffnen
setScreenShotRect(x, y, width, height)Bereich im vorhandenen Aufnahmefenster setzen, empfohlen nach erfolgreichem screenShotAndEdit(). Ohne Fenster false
setScreenShotRectRadius(ratio)Rechteckverhältnis wie 16 / 9 setzen, keine Rundung; Pfadauswahlen nutzen es nicht
switchScreenshotMode()Bei sichtbarer Aufnahme zum nächsten Modus wechseln; ohne verfügbares Fenster false
directScreenShot(rect, action)Bekannten Bereich direkt aufnehmen und Aktion ausführen, ohne Rückgabe; für Kopieren, Anheften und Speichern
directScreenShotSpRect(type, action)PixConst-Bereich direkt aufnehmen, wie getSpRect(type) gefolgt von Direktaufnahme
directScreenShotAndSaveTo(rect, filePath)Direkt an vollständigen Dateipfad speichern, mit Variablen und Nummernsuffixen bei gleichen Namen; keine Rückgabe

Die Tabelle lässt pixpin. weg; schreiben Sie etwa pixpin.screenShotAndCopy(). Direktaufnahme mit Edit, ImageEdit, LongShot oder GifShot öffnet nicht den jeweiligen Editor oder Recorder. Nutzen Sie screenShot(action) oder passende Spezial-APIs.

Verzögerung, lange Screenshots und Aufnahme

APIParameter und Aufgabe
delayScreenShot(seconds, hasPos, x, y, hasSize, width, height, radius, ratio)Nach mindestens 0,2 Sekunden die Aufnahmebearbeitung öffnen; ersetzt einen noch ausstehenden gleichartigen Auftrag. true bestätigt den Timer
delayScreenShotWithTips(seconds[, rect])Abbrechbaren Countdown mit ganzen Sekunden, mindestens 1, anzeigen. Bereich übergeben oder danach wählen; keine Rückgabe
longScreenShot(rect)Lange Aufnahme öffnen oder den Bereich einer vorhandenen ändern
openLongScreenShot(x, y, width, height)Bereich mit vier Zahlen statt vorherigem Rechteck festlegen
gifScreenShot(rect)Recorder öffnen oder vorhandenen Bereich ändern. GIF bleibt im Namen, das Format bestimmt die Oberfläche
openGifScreenShot(x, y, width, height)Aufnahmebereich mit vier Zahlen festlegen
gifShotPause()Pause/Fortsetzen umschalten; ohne Recorder false
hasLongShotWidget()Vorhandensein eines Fensters für lange Aufnahme zurückgeben

Bei delayScreenShot wird das feste Rechteck verwendet, wenn hasPos und hasSize beide true sind. Ist nur hasSize auf true gesetzt, entsteht die angegebene Größe am Zeiger; ohne Größe bleibt die Auswahl manuell. radius ist ungenutzt: 0. Ein positiver ratio fixiert das Verhältnis, sonst -1.

Diese APIs öffnen oder steuern Fenster und bestätigen weder beendetes Scrollen noch Videoexport. Die weiteren Schritte erfolgen in der jeweiligen Oberfläche.

Pins und Stapelverwaltung

APIParameter und Aufgabe
pinFromClipBoard()Pin aus Zwischenablage erstellen; während normaler oder langer Aufnahme aktuellen Inhalt anzuheften versuchen. Die Rückgabe zeigt nicht den Erfolg des Zwischenablage-Pins
pinFromFiles(files)files ist ein Pfad-Array; vorhandene Dateien verarbeiten. Bei leerem Array oder fehlenden Dateien false
pinSelectedFile()Auswahl des Dateimanagers anheften; bei leerer Auswahl oder Lesefehler false. macOS benötigt Automatisierungsrechte
restoreLastClosedPin()Nach üblichen Regeln wiederherstellen und Erfolg zurückgeben
closeAllPin()Aktuelle Pin-Fenster normal schließen
hideOrShowAllPin() / isAllPinHide()Alle Pins ein-/ausblenden / vollständig ausgeblendeten Zustand prüfen
hideOrShowPinsExceptSelected()Nicht ausgewählte Pins ausblenden und beim nächsten Aufruf zurückholen. Ohne Auswahl aktiven Pin versuchen, sonst Auswahl anfordern
switchPinGroup()Pin-Gruppe wechseln
trigMousePenetration()Klick-Durchlässigkeit am Zeiger umschalten; außerhalb eines Pins bei allen deaktivieren
setAllPinToRoiMode() / unsetAllPinToRoiMode()Miniaturansicht einschalten / normale Ansicht herstellen. ROI erstellt hier keinen Fenster-Pin
saveAllPinImageTo(folder)Exportierbare Bilder mit Nummern und Dublettensuffixen im Ordner speichern; Argument ist ein Ordner, kein vollständiger Dateiname
saveAllPinImageWithDialog()Erst Ordner wählen, dann gesammelt speichern
destoryAllPin()Alle Pins nach aktuellen Bestätigungsregeln vernichten, ohne normale Wiederherstellung. Die Schreibweise ist wirklich destory, nicht destroy

Systembefehle und weitere Funktionen

APIParameter und Aufgabe
translateClipboard()Zwischenablage übersetzen und melden, ob der Vorgang erfolgreich gestartet wurde
disableShortcuts(disabled) / isDisableShortcuts()Mit true andere globale Tasten pausieren, mit false aktivieren / ausdrückliche Pause abfragen, nicht Ausnahmen oder Spielstatus
moveCursorBy(dx, dy)Zeiger um Versatz bewegen; schnelle Aufrufe beschleunigen, daher entspricht die Gesamtstrecke nicht zwingend der Summe
toggleWindowTopmostUnderMouse()Fenster am Zeiger im Vordergrund halten umschalten. Windows unterstützt Fremdfenster, macOS nur PixPin
openConfigurationWindow() / openDoc()Einstellungen / Handbuch öffnen
runSystem(command)Externes Programm starten und sofort zurückkehren, ohne Rückgabe; String enthält Programm und Argumente
runSystemSync(command)Externes Programm starten und synchron warten; code, output, error enthalten Exitcode, Standardausgabe und Standardfehler
quit()PixPin beenden

runSystem und runSystemSync starten direkt ohne automatischen Interpreter. Pipes, Umleitung und Shell-Befehle wirken nicht von selbst; geben Sie nötigenfalls den Systeminterpreter an. Der String darf nicht leer sein.

Für den Rechner kann Windows pixpin.runSystem("calc"), macOS pixpin.runSystem("/usr/bin/open -a Calculator") verwenden. Unten folgt die synchrone Auswertung; wählen Sie ein vorhandenes Programm.

(function () {
  var result = pixpin.runSystemSync("cmd /c ver"); // Windows 示例
  console.log(result.code, result.output, result.error);
})();

Synchrones Warten blockiert vorübergehend die Oberfläche. Die aktuelle Grenze liegt bei etwa 30 Sekunden, ohne eigenes Timeout-Feld. code allein beweist keinen korrekten Prozessstart. Für sofortige Rückkehr nutzen Sie runSystem.

Bereichs- und Aktionskonstanten

PixConst: Aufnahmeort

KonstanteBereich
PixConst.SpRectScreenUnderMouseMonitor am Zeiger
PixConst.SpRectAllScreenRechteck über alle Bildschirme
PixConst.SpRectWindowUnderMouseFenster am Zeiger
PixConst.SpRectActiveWindowAktives Fenster
PixConst.SpRectLastShotRectLetzter Auswahlbereich; zuvor eine gültige Aufnahme abschließen

Bereiche hängen von Fenstern, Zeiger und Verlauf bei Ausführung ab. Ohne gültige Fenster oder Historie ist kein verwendbarer Bereich garantiert.

ShotAction: nach der Auswahl

Verwenden Sie ShotAction., etwa ShotAction.QuickSave.

KonstanteAktion
EditIn der Screenshot-Symbolleiste markieren und weiterarbeiten
Copy / PinBild kopieren / anheften
Save / QuickSaveSpeicherfenster öffnen / Schnellspeichern verwenden
CopyOcrTextText erkennen und kopieren
TranslateScreenshot übersetzen
OcrTable / OcrDocumentTabellenerkennung / Dokumenterkennung
LatexRecognitionFormelerkennung
LongShot / GifShotLangen Screenshot / Bildschirmaufzeichnung öffnen
WinRoiFenster-Pin erstellen, nur Windows
PrintDrucken
CopyQRCodeTextQR-Code erkennen und Inhalt kopieren
AirDropAirDrop, nur macOS
ImageEditSeparaten Bildeditor öffnen
CloseAktuelle Aufnahme schließen

Konstanten wählen vorhandene Funktionen, ohne Bedingungen zu ändern. Kopieren, Speichern und Erkennung bleiben von Einstellungen und Dialogen abhängig.

Fehlersuche

SymptomPrüfung
SyntaxErrorAnführungszeichen, Klammern und Kommas prüfen, Markdown-Begrenzer entfernen und ?., async/await, import vermeiden
ReferenceErrorVariablendeklaration, Schreibweise und Gültigkeitsbereich prüfen
Methode fehlt oder Aufruf ohne WirkungNamen und Großschreibung prüfen; Rechtecke mit API, Dateilisten als Arrays erzeugen
Einstellungsfenster aufgenommenEs war bei Skript testen aktiv; Aktion anwenden und im Zielprogramm per Taste testen
Aufnahme gestartet, aber kein fertiges BildscreenShot(...) erfordert Auswahl; für Direktaufnahme directScreenShot... nutzen
Keine SpeicherbenachrichtigungdirectScreenShotAndSaveTo zeigt keine; Pfad, Endung und Zielordner prüfen
Tasten starten Skript nichtRegistrierung, Deaktivierung und Ausnahmen prüfen; siehe Tastenstatus
macOS-Befehlsaufnahme reagiert nichtBildschirmaufnahme und Bedienungshilfen in PixPin erlauben und System entsperren

try / catch fängt Fehler, aber false und fehlende Rückgaben sind keine automatischen Ausnahmen. Testen Sie erst eine Operation, ergänzen Sie dann Parameter und Kombinationen. Fehlerfreiheit beweist keine abgeschlossenen Ergebnisse.

Auf dieser Seite