Scripts
Créez et lancez des scripts PixPin : syntaxe JavaScript, paramètres des API de capture et d'épinglage, constantes, différences de plateforme et dépannage.
Les scripts PixPin appellent les fonctions de capture, d'épinglage et de fenêtre en JavaScript. Enregistrez des étapes répétées comme action, puis utilisez raccourci, menu ou ligne de commande. Scripts est un chapitre du manuel ; l'éditeur se trouve dans Configuration → Raccourcis/Actions.
- Capturer la fenêtre activeCapturer et copier en une action.
- Zone de capture fixeRéutiliser position et dimensions.
- Ouvrir un lot de référencesÉpingler un lot depuis une liste de fichiers.
Quand utiliser un script
| Besoin | Apport du script |
|---|---|
| Capturer toujours la même zone | Fixer position et dimensions, ou créer une zone de taille donnée autour du pointeur |
| Réduire les clics dans la barre d'outils | Copier, épingler, enregistrer ou reconnaître dès la sélection |
| Éviter une sélection manuelle répétée | Capturer directement la fenêtre active, l'écran sous le pointeur ou la dernière zone |
| Ouvrir chaque jour les mêmes références | Créer plusieurs épingles à partir d'un tableau de chemins |
| Intégrer l'opération à d'autres outils | Exécuter du texte ou un fichier .js en ligne de commande |
Pour changer une touche, régler le menu ou exclure un programme, utilisez Raccourcis/actions. Les scripts servent à combiner des opérations ou fixer des paramètres.
Créer et lancer un premier script
Ouvrez Configuration → Raccourcis/Actions, cliquez sur Ajouter une nouvelle action et choisissez un Préréglage proche, par exemple Capture d'écran et... → Capturer et épingler.
Donnez un nom unique et vérifiez ou modifiez Script. Cette ligne lance la capture puis épingle après validation de la zone.
pixpin.screenShot(ShotAction.Pin);Cliquez sur Tester le script, effectuez une vraie capture et vérifiez le résultat. Une erreur s'affiche en cas d'échec.
Cliquez sur Appliquer, puis affectez une touche dans la liste. Vous pouvez aussi cocher Menu de la barre d'état pour utiliser ce menu.
Le test exécute réellement le script. Un autre préréglage remplace le contenu, et Annuler ne défait pas les opérations testées. Les scripts intégrés ne se modifient pas ; créez une action personnalisée pour une variante.
Exécution en ligne de commande
Placez le texte après -r ou le chemin après -f. Si PixPin fonctionne déjà, la requête va à l'instance existante ; sinon elle attend l'initialisation.
Windows PowerShell : remplacez le chemin par votre installation :
& 'D:/Apps/PixPin/PixPin.exe' -r 'pixpin.screenShot(ShotAction.Copy);'
& 'D:/Apps/PixPin/PixPin.exe' -f 'D:/Scripts/capture.js'Terminal macOS : ces exemples supposent une installation dans Applications :
"/Applications/PixPin.app/Contents/MacOS/PixPin" -r 'pixpin.screenShot(ShotAction.Copy);'
"/Applications/PixPin.app/Contents/MacOS/PixPin" -f '/Users/yourname/Scripts/capture.js'Le fichier contient uniquement du JavaScript, sans délimiteurs Markdown. Avec du chinois, préférez UTF-8 avec BOM. Pour un script long, -f réduit les problèmes de guillemets, antislashs et échappement de $. Gardez les guillemets autour des chemins contenant des espaces.
Le retour de la commande ne signifie pas que capture, reconnaissance ou enregistrement sont terminés. La dernière expression n'est pas renvoyée comme résultat structuré. Sur macOS, l'automatisation n'affiche pas spontanément les instructions d'autorisation pour la capture interactive : accordez d'abord les permissions d'enregistrement d'écran et d'accessibilité dans l'application.
Syntaxe et exécution
Le champ accepte JavaScript. Les API et constantes distinguent la casse : écrivez pixpin.screenShot, pas pixpin.screenshot.
| Catégorie | Formes courantes prises en charge |
|---|---|
| Variables et données | var, let, const ; nombres, chaînes, booléens, tableaux, objets, null |
| Conditions et boucles | if / else, switch, for, while, for...of, break |
| Fonctions et classes | function, fonctions fléchées, paramètres, return, class ; pas de return directement hors d'une fonction |
| Expressions courantes | Calcul et comparaison, &&, ||, !, ternaire, chaînes modèles, déstructuration, ?? |
| Traitement des données | Objets intégrés comme Array, String, Math, Date, JSON, Map, Set |
| Exceptions | try / catch / finally, throw new Error(...) |
L'environnement actuel ne prend pas en charge ?. ou async/await, ni import / export dans les scripts ordinaires. Utilisez if pour les valeurs nulles et les API PixPin pour les opérations par étapes.
Aucun window, document, fetch du navigateur, ni require, process, fs de Node.js ou setTimeout. Ne collez pas d'exemples dépendant du Web, de Node.js ou de paquets tiers. La prise en charge des objets ne permet pas de substituer un objet ordinaire au rectangle d'une API.
Exécution séquentielle sans attendre la sélection
Les instructions s'exécutent dans l'ordre, mais ouvrir la capture ne fait que la démarrer, sans attendre votre sélection. Pour capturer puis épingler, utilisez pixpin.screenShot(ShotAction.Pin) ; n'enchaînez pas simplement capture et épinglage du presse-papiers sur deux lignes.
- Agir après sélectionscreenShot : sélectionner, puis copier ou épingler.
- Zone connue, capture immédiatedirectScreenShot : zone connue, sans sélection manuelle.
Le moteur est réutilisé. Placez les variables temporaires dans des fonctions pour limiter les interactions entre exécutions. Les exemples multilignes utilisent une fonction immédiatement invoquée :
(function () {
var width = 640;
var height = 480;
var rect = pixpin.genRectUnderCursor(width, height);
pixpin.directScreenShot(rect, ShotAction.Copy);
})();Le () final exécute la fonction. Une boucle infinie attendant la capture bloque le fil de l'interface. console.log(...) écrit des journaux, mais l'éditeur n'a pas de console interactive.
Objets globaux, paramètres et retours
| Nom : | Rôle |
|---|---|
pixpin | Appeler les API de capture, épinglage, délai, fenêtre et commandes système |
ShotAction | Choisir l'opération après capture, par exemple ShotAction.Copy |
PixConst | Choisir une zone spéciale, par exemple PixConst.SpRectActiveWindow |
Donnez directement nombres, booléens et chaînes ; les fichiers utilisent un tableau de chaînes. Préférez des chemins absolus. En JavaScript, écrivez D:/Images/example.png ou échappez les antislashs : D:\\Images\\example.png.
Créez les rectangles avec ces trois API et transmettez-les sans modification :
| Appel | Signification |
|---|---|
pixpin.genRect(x, y, width, height) | Définir position et taille à l'écran |
pixpin.genRectUnderCursor(width, height) | Créer une zone centrée sur le pointeur et ajuster sa position à l'écran |
pixpin.getSpRect(type) | Lire une zone spéciale ; type utilise une constante PixConst |
Les coordonnées sont logiques ; largeur et hauteur sont positives. Les coordonnées peuvent être négatives sur plusieurs écrans. Faute de place, genRectUnderCursor réduit proportionnellement la zone. La mise à l'échelle et les réglages d'enregistrement influencent aussi les pixels exportés. Ne transmettez pas {x: 100, y: 100, width: 640, height: 480} : ces champs ne créent pas le rectangle attendu.
true signifie généralement que la requête est acceptée, pas que l'interaction est terminée. Les tableaux précisent chaque retour. Une API sans retour ne permet pas de savoir si l'enregistrement a réussi.
Exemples à adapter
Capturer et copier la fenêtre active
Placez l'application cible au premier plan, puis déclenchez le raccourci global. La capture est immédiate, sans sélection manuelle.
pixpin.directScreenShotSpRect(
PixConst.SpRectActiveWindow,
ShotAction.Copy
);Avec Tester le script, la fenêtre active peut être celle des paramètres. Appliquez l'action et déclenchez-la depuis l'application cible pour vérifier.
Définir une zone puis l'ajuster
Démarrez une capture normale, puis fixez (100, 100) et 640 × 480. La barre d'outils reste disponible pour annoter ou ajuster.
(function () {
if (pixpin.screenShotAndEdit()) {
pixpin.setScreenShotRect(100, 100, 640, 480);
pixpin.setScreenShotRectRadius(4 / 3);
}
})();Malgré son nom, setScreenShotRectRadius règle le rapport largeur/hauteur, pas les coins arrondis. Retirez la dernière ligne si aucun rapport fixe n'est nécessaire.
Capturer directement avec un nom horodaté
Cet exemple capture l'écran sous le pointeur. Remplacez le dossier avant exécution ; macOS accepte un chemin comme /Users/yourname/Pictures/....
(function () {
var rect = pixpin.getSpRect(PixConst.SpRectScreenUnderMouse);
pixpin.directScreenShotAndSaveTo(
rect,
"D:/Captures/PixPin_$yyyy-MM-dd_HH-mm-ss$.png"
);
})();L'enregistrement développe les variables temporelles ; voir Variables de chemin et de nom. Un suffixe numérique évite les doublons, sans notification. L'API ne renvoie ni chemin final ni indicateur de réussite.
Épingler plusieurs références
Remplacez les chemins du tableau par des fichiers existants. Ajoutez d'autres entrées au même format.
(function () {
var files = [
"D:/Reference/layout.png",
"D:/Reference/colors.png"
];
if (!pixpin.pinFromFiles(files)) {
throw new Error("没有找到可贴出的文件,请检查路径。");
}
})();Les fichiers absents sont ignorés ; un tableau vide ou sans fichier existant renvoie false. true indique la transmission des fichiers à l'épinglage, sans garantir que tous les formats s'affichent comme images.
Attendre trois secondes puis capturer
Voici la forme la plus simple avec compte à rebours annulable :
pixpin.delayScreenShotWithTips(3);Pour position et taille, utilisez l'API suivante. Dans l'ordre : secondes, position spécifiée, x, y, taille spécifiée, largeur, hauteur, paramètre réservé, rapport.
pixpin.delayScreenShot(3, true, 100, 100, true, 640, 480, 0, 4 / 3);Basculer un état avec la même action
Inversez l'état de désactivation : suspendez les autres raccourcis lorsqu'ils sont actifs, puis appuyez encore pour les restaurer.
pixpin.disableShortcuts(!pixpin.isDisableShortcuts());La touche de cette action lève cette suspension explicite, mais reste soumise aux exclusions et aux jeux en plein écran sous Windows.
Référence des API personnalisées
API d'opérations accessibles aux scripts ordinaires. rect provient d'une API de rectangle, action utilise ShotAction. Les crochets indiquent les paramètres facultatifs et ne se saisissent pas dans le code.
Capture et zones
| API | Paramètres et rôle |
|---|---|
screenShot(action) | Commencer la sélection, puis exécuter action à la validation. Renvoie un booléen ; false est possible si une capture est ouverte, une capture longue utilisée ou les autorisations insuffisantes |
screenShotAndEdit() | Équivaut à screenShot(ShotAction.Edit) et affiche la barre d'outils après sélection |
screenShotAndCopy() | Équivaut à screenShot(ShotAction.Copy) |
screenShotAndPin() | Équivaut à screenShot(ShotAction.Pin) |
screenShotAndCopyOcr() | Équivaut à screenShot(ShotAction.CopyOcrText) ; reconnaître puis copier le texte |
openCustomScreenShot() | Ouvrir la capture personnalisée/différée pour définir manuellement les paramètres |
setScreenShotRect(x, y, width, height) | Définir la zone d'une capture existante, de préférence après un screenShotAndEdit() réussi. Renvoie false sans fenêtre |
setScreenShotRectRadius(ratio) | Définir le rapport rectangulaire, par exemple 16 / 9, pas les coins. Ne s'applique pas aux sélections par tracé |
switchScreenshotMode() | Passer au mode suivant si la capture est visible ; false sans fenêtre disponible |
directScreenShot(rect, action) | Capturer une zone connue et exécuter une action, sans retour. Convient à copier, épingler ou enregistrer |
directScreenShotSpRect(type, action) | Capturer directement une zone PixConst, comme getSpRect(type) suivi de la capture directe |
directScreenShotAndSaveTo(rect, filePath) | Capturer vers un chemin complet ; variables d'enregistrement et suffixes numériques pour doublons, sans retour |
Le préfixe pixpin. est omis ; écrivez par exemple pixpin.screenShotAndCopy(). La capture directe avec Edit, ImageEdit, LongShot ou GifShot n'ouvre pas l'éditeur ou l'enregistreur correspondant. Utilisez screenShot(action) ou une API dédiée pour ces interactions.
Délai, capture longue et enregistrement
| API | Paramètres et rôle |
|---|---|
delayScreenShot(seconds, hasPos, x, y, hasSize, width, height, radius, ratio) | Ouvrir l'édition après délai, minimum 0,2 seconde. Un appel remplace la tâche de ce type encore en attente ; true signifie que le minuteur est défini |
delayScreenShotWithTips(seconds[, rect]) | Afficher un compte à rebours annulable, en secondes entières et au moins 1. Fournir une zone ou la sélectionner ensuite. Aucun retour |
longScreenShot(rect) | Ouvrir une capture longue sur la zone, ou modifier la zone de la fenêtre existante |
openLongScreenShot(x, y, width, height) | Définir la zone de capture longue avec quatre nombres, sans créer de rectangle |
gifScreenShot(rect) | Ouvrir ou ajuster la zone d'enregistrement. Le nom conserve GIF, mais l'interface détermine le format final |
openGifScreenShot(x, y, width, height) | Définir la zone d'enregistrement avec quatre nombres |
gifShotPause() | Basculer pause/reprise ; false sans fenêtre d'enregistrement |
hasLongShotWidget() | Indiquer si une fenêtre de capture longue existe |
delayScreenShot utilise le rectangle si hasPos et hasSize sont true. Avec seulement hasSize défini sur true, la taille se place autour du pointeur ; sans taille, la sélection reste manuelle. radius est inutilisé : donnez 0. Un ratio positif fixe le rapport, sinon utilisez -1.
Ces API ouvrent ou contrôlent les fenêtres ; elles n'indiquent pas la fin du défilement ou de l'export vidéo. Poursuivez dans chaque interface.
Épingles et gestion par lot
| API | Paramètres et rôle |
|---|---|
pinFromClipBoard() | Créer une épingle du presse-papiers ; pendant une capture normale ou longue, tenter d'épingler le résultat courant. Le retour ne prouve pas la réussite de l'épinglage du presse-papiers |
pinFromFiles(files) | files est un tableau de chemins ; traiter les fichiers existants. false si le tableau est vide ou sans fichier existant |
pinSelectedFile() | Épingler les fichiers sélectionnés dans le gestionnaire ; false si rien n'est sélectionné ou si la lecture échoue. Autorisation d'automatisation sur macOS |
restoreLastClosedPin() | Retrouver une épingle selon les règles habituelles et renvoyer la réussite |
closeAllPin() | Fermer les fenêtres actuelles par le processus normal |
hideOrShowAllPin() / isAllPinHide() | Basculer la visibilité globale / vérifier si toutes les épingles sont masquées |
hideOrShowPinsExceptSelected() | Masquer les épingles hors sélection, puis les restaurer au prochain appel. Sans sélection, essayer l'épingle active ; sinon demander une sélection |
switchPinGroup() | Changer de groupe d'épingles |
trigMousePenetration() | Basculer les clics traversants sous le pointeur, ou les désactiver partout si aucune épingle n'est dessous |
setAllPinToRoiMode() / unsetAllPinToRoiMode() | Passer en miniature / restaurer l'affichage normal ; ROI ne crée pas ici d'épingle de fenêtre |
saveAllPinImageTo(folder) | Enregistrer par lot les images exportables dans le dossier, avec numéros et suffixes de doublon. L'argument est un dossier, pas un nom complet |
saveAllPinImageWithDialog() | Choisir un dossier puis enregistrer par lot |
destoryAllPin() | Détruire toutes les épingles selon les confirmations actuelles, sans restauration de fermeture. Le nom est bien destory, pas destroy |
Commandes système et autres opérations
| API | Paramètres et rôle |
|---|---|
translateClipboard() | Envoyer le presse-papiers à la traduction et indiquer si elle démarre |
disableShortcuts(disabled) / isDisableShortcuts() | true suspend, false rétablit les autres raccourcis / consulter cette suspension explicite, indépendamment des exclusions et jeux |
moveCursorBy(dx, dy) | Déplacer le pointeur d'un décalage ; les appels rapprochés accélèrent, donc le total n'est pas forcément la somme des décalages |
toggleWindowTopmostUnderMouse() | Basculer le maintien au premier plan de la fenêtre sous le pointeur. Windows agit sur d'autres applications ; macOS sur PixPin seulement |
openConfigurationWindow() / openDoc() | Ouvrir les paramètres / le manuel |
runSystem(command) | Lancer un programme externe et revenir aussitôt, sans retour ; la chaîne inclut programme et arguments |
runSystemSync(command) | Lancer puis attendre ; l'objet renvoie code, output, error pour code de sortie, sortie standard et erreur standard |
quit() | Quitter PixPin |
runSystem et runSystemSync démarrent directement les programmes sans interpréteur automatique. Tubes, redirections et commandes internes du shell ne s'appliquent pas seuls ; indiquez explicitement l'interpréteur de la plateforme. La commande ne peut être vide.
Pour la calculatrice, Windows peut utiliser pixpin.runSystem("calc") et macOS pixpin.runSystem("/usr/bin/open -a Calculator"). Exemple de lecture synchrone ci-dessous ; utilisez un programme existant sur votre système.
(function () {
var result = pixpin.runSystemSync("cmd /c ver"); // Windows 示例
console.log(result.code, result.output, result.error);
})();L'attente synchrone bloque temporairement l'interface. La limite actuelle est d'environ 30 secondes, sans champ distinct de dépassement ; code seul ne prouve pas un démarrage correct. Utilisez runSystem pour revenir aussitôt.
Constantes de zone et d'action
PixConst : où capturer
| Constante | Zone |
|---|---|
PixConst.SpRectScreenUnderMouse | Écran sous le pointeur |
PixConst.SpRectAllScreen | Rectangle englobant tous les écrans |
PixConst.SpRectWindowUnderMouse | Fenêtre sous le pointeur |
PixConst.SpRectActiveWindow | Fenêtre active |
PixConst.SpRectLastShotRect | Dernière sélection ; effectuez d'abord une capture valide |
La zone dépend des fenêtres, du pointeur et de l'historique au moment de l'exécution. Sans fenêtre ou historique valide, ne supposez pas obtenir une zone utilisable.
ShotAction : après la sélection
Ajoutez ShotAction., par exemple ShotAction.QuickSave.
| Constante | Action |
|---|---|
Edit | Continuer l'annotation et les opérations dans la barre de capture |
Copy / Pin | Copier l'image / épingler |
Save / QuickSave | Ouvrir l'enregistrement / utiliser l'enregistrement rapide |
CopyOcrText | Reconnaître et copier le texte |
Translate | Traduire la capture |
OcrTable / OcrDocument | Reconnaissance de tableaux / de documents |
LatexRecognition | Reconnaissance de formules |
LongShot / GifShot | Ouvrir la capture longue / l'enregistrement d'écran |
WinRoi | Créer une épingle de fenêtre, Windows uniquement |
Print | Imprimer |
CopyQRCodeText | Reconnaître et copier le code QR |
AirDrop | AirDrop, macOS uniquement |
ImageEdit | Ouvrir un éditeur d'image séparé |
Close | Fermer cette capture |
Les constantes choisissent une fonction sans changer ses conditions. Copie, enregistrement et reconnaissance restent soumis aux réglages et aux fenêtres interactives.
Dépannage
| Symptôme | Vérification |
|---|---|
SyntaxError | Vérifiez guillemets, parenthèses et virgules, retirez les délimiteurs Markdown et évitez ?., async/await ou import |
ReferenceError | Vérifiez déclaration des variables, casse et portée |
| Méthode introuvable ou appel sans effet | Vérifiez noms et casse ; générez les rectangles par API et les listes de fichiers en tableaux |
| Les paramètres ont été capturés | Ils étaient au premier plan lors de Tester le script ; appliquez puis essayez dans l'application cible avec le raccourci |
| Capture commencée sans image finale | screenShot(...) attend votre sélection ; utilisez directScreenShot... pour la capture directe |
| Aucune notification d'enregistrement | directScreenShotAndSaveTo n'en affiche pas ; vérifiez chemin, extension et dossier |
| Le raccourci ne lance pas le script | Vérifiez état, désactivation et exclusions ; voir État des raccourcis |
| Capture macOS en ligne de commande sans réponse | Autorisez l'enregistrement d'écran et l'accessibilité dans PixPin et déverrouillez le système |
try / catch intercepte les erreurs, mais false ou l'absence de retour ne déclenchent pas automatiquement une exception. Testez une opération puis ajoutez paramètres et combinaisons. Aucune erreur ne signifie pas que tous les résultats sont terminés.
Articles associés
Raccourcis intégrés
Consultez les touches de huit onglets, modifiez les raccourcis, résolvez les conflits et vérifiez les différences entre Windows et macOS.
Souris
Personnalisez les gestes sur les épingles : zoom, opacité, copie, miniatures et sélection multiple, avec les réglages par défaut et les conflits.