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.
Geeignete Aufgaben
| Bedarf | Hilfe durch das Skript |
|---|---|
| Immer denselben Bereich aufnehmen | Position und Größe fixieren oder einen Bereich gegebener Größe am Zeiger erzeugen |
| Weniger Werkzeugklicks | Nach Auswahl direkt kopieren, anheften, speichern oder erkennen |
| Manuelle Auswahl vermeiden | Aktives Fenster, Bildschirm am Zeiger oder letzten Bereich direkt aufnehmen |
| Täglich dieselben Referenzdateien öffnen | Mehrere Pins aus einem Array von Dateipfaden erstellen |
| Andere Werkzeuge anbinden | Skripttext 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
Ö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 Daten | var, let, const; Zahlen, Strings, boolesche Werte, Arrays, Objekte, null |
| Bedingungen und Schleifen | if / else, switch, for, while, for...of, break |
| Funktionen und Klassen | function, Pfeilfunktionen, Parameter, return, class; kein direktes return außerhalb einer Funktion |
| Ausdrücke | Arithmetik, Vergleiche, &&, ||, !, ternäre Ausdrücke, Template-Strings, Destrukturierung, ?? |
| Datenverarbeitung | Integrierte Objekte wie Array, String, Math, Date, JSON, Map, Set |
| Ausnahmen | try / 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.
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 |
|---|---|
pixpin | Aufnahme-, Pin-, Verzögerungs-, Fenster- und System-APIs aufrufen |
ShotAction | Aktion nach Aufnahme wählen, etwa ShotAction.Copy |
PixConst | Spezialbereich 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:
| Aufruf | Bedeutung |
|---|---|
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
| API | Parameter 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
| API | Parameter 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
| API | Parameter 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
| API | Parameter 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
| Konstante | Bereich |
|---|---|
PixConst.SpRectScreenUnderMouse | Monitor am Zeiger |
PixConst.SpRectAllScreen | Rechteck über alle Bildschirme |
PixConst.SpRectWindowUnderMouse | Fenster am Zeiger |
PixConst.SpRectActiveWindow | Aktives Fenster |
PixConst.SpRectLastShotRect | Letzter 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.
| Konstante | Aktion |
|---|---|
Edit | In der Screenshot-Symbolleiste markieren und weiterarbeiten |
Copy / Pin | Bild kopieren / anheften |
Save / QuickSave | Speicherfenster öffnen / Schnellspeichern verwenden |
CopyOcrText | Text erkennen und kopieren |
Translate | Screenshot übersetzen |
OcrTable / OcrDocument | Tabellenerkennung / Dokumenterkennung |
LatexRecognition | Formelerkennung |
LongShot / GifShot | Langen Screenshot / Bildschirmaufzeichnung öffnen |
WinRoi | Fenster-Pin erstellen, nur Windows |
Print | |
CopyQRCodeText | QR-Code erkennen und Inhalt kopieren |
AirDrop | AirDrop, nur macOS |
ImageEdit | Separaten Bildeditor öffnen |
Close | Aktuelle Aufnahme schließen |
Konstanten wählen vorhandene Funktionen, ohne Bedingungen zu ändern. Kopieren, Speichern und Erkennung bleiben von Einstellungen und Dialogen abhängig.
Fehlersuche
| Symptom | Prüfung |
|---|---|
SyntaxError | Anführungszeichen, Klammern und Kommas prüfen, Markdown-Begrenzer entfernen und ?., async/await, import vermeiden |
ReferenceError | Variablendeklaration, Schreibweise und Gültigkeitsbereich prüfen |
| Methode fehlt oder Aufruf ohne Wirkung | Namen und Großschreibung prüfen; Rechtecke mit API, Dateilisten als Arrays erzeugen |
| Einstellungsfenster aufgenommen | Es war bei Skript testen aktiv; Aktion anwenden und im Zielprogramm per Taste testen |
| Aufnahme gestartet, aber kein fertiges Bild | screenShot(...) erfordert Auswahl; für Direktaufnahme directScreenShot... nutzen |
| Keine Speicherbenachrichtigung | directScreenShotAndSaveTo zeigt keine; Pfad, Endung und Zielordner prüfen |
| Tasten starten Skript nicht | Registrierung, Deaktivierung und Ausnahmen prüfen; siehe Tastenstatus |
| macOS-Befehlsaufnahme reagiert nicht | Bildschirmaufnahme 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.
Verwandte Artikel
Integrierte Tastenkombinationen
Prüfen Sie Standardtasten in acht Registerkarten, ändern oder löschen Sie Belegungen und klären Sie Konflikte sowie Unterschiede zwischen Windows und macOS.
Maus
Passen Sie Mausgesten für Pins an: Zoom, Deckkraft, Kopieren, Miniaturen und Mehrfachauswahl mit Standardwerten, Konflikten und Systemunterschieden.