PixPin
Paramètres

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.
Enregistrez les opérations répétées dans un script, puis associez-le à un raccourci ou au menu de la barre d'état. Les contenus illustrés sont fictifs.

Quand utiliser un script

BesoinApport du script
Capturer toujours la même zoneFixer position et dimensions, ou créer une zone de taille donnée autour du pointeur
Réduire les clics dans la barre d'outilsCopier, épingler, enregistrer ou reconnaître dès la sélection
Éviter une sélection manuelle répétéeCapturer directement la fenêtre active, l'écran sous le pointeur ou la dernière zone
Ouvrir chaque jour les mêmes référencesCréer plusieurs épingles à partir d'un tableau de chemins
Intégrer l'opération à d'autres outilsExé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

Le préréglage remplit le nom et le script, représenté ici par des lignes. Cochez l'entrée du menu, appliquez, puis définissez le raccourci dans la liste.

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égorieFormes courantes prises en charge
Variables et donnéesvar, let, const ; nombres, chaînes, booléens, tableaux, objets, null
Conditions et bouclesif / else, switch, for, while, for...of, break
Fonctions et classesfunction, fonctions fléchées, paramètres, return, class ; pas de return directement hors d'une fonction
Expressions courantesCalcul et comparaison, &&, ||, !, ternaire, chaînes modèles, déstructuration, ??
Traitement des donnéesObjets intégrés comme Array, String, Math, Date, JSON, Map, Set
Exceptionstry / 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.
Les deux méthodes copient une image, mais à des moments différents. Le cadre pointillé indique seulement la zone du script et n'apparaît pas à l'exécution.

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
pixpinAppeler les API de capture, épinglage, délai, fenêtre et commandes système
ShotActionChoisir l'opération après capture, par exemple ShotAction.Copy
PixConstChoisir 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 :

AppelSignification
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

APIParamè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

APIParamè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

APIParamè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

APIParamè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

ConstanteZone
PixConst.SpRectScreenUnderMouseÉcran sous le pointeur
PixConst.SpRectAllScreenRectangle englobant tous les écrans
PixConst.SpRectWindowUnderMouseFenêtre sous le pointeur
PixConst.SpRectActiveWindowFenêtre active
PixConst.SpRectLastShotRectDerniè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.

ConstanteAction
EditContinuer l'annotation et les opérations dans la barre de capture
Copy / PinCopier l'image / épingler
Save / QuickSaveOuvrir l'enregistrement / utiliser l'enregistrement rapide
CopyOcrTextReconnaître et copier le texte
TranslateTraduire la capture
OcrTable / OcrDocumentReconnaissance de tableaux / de documents
LatexRecognitionReconnaissance de formules
LongShot / GifShotOuvrir la capture longue / l'enregistrement d'écran
WinRoiCréer une épingle de fenêtre, Windows uniquement
PrintImprimer
CopyQRCodeTextReconnaître et copier le code QR
AirDropAirDrop, macOS uniquement
ImageEditOuvrir un éditeur d'image séparé
CloseFermer 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ômeVérification
SyntaxErrorVérifiez guillemets, parenthèses et virgules, retirez les délimiteurs Markdown et évitez ?., async/await ou import
ReferenceErrorVérifiez déclaration des variables, casse et portée
Méthode introuvable ou appel sans effetVérifiez noms et casse ; générez les rectangles par API et les listes de fichiers en tableaux
Les paramètres ont été capturésIls étaient au premier plan lors de Tester le script ; appliquez puis essayez dans l'application cible avec le raccourci
Capture commencée sans image finalescreenShot(...) attend votre sélection ; utilisez directScreenShot... pour la capture directe
Aucune notification d'enregistrementdirectScreenShotAndSaveTo n'en affiche pas ; vérifiez chemin, extension et dossier
Le raccourci ne lance pas le scriptVérifiez état, désactivation et exclusions ; voir État des raccourcis
Capture macOS en ligne de commande sans réponseAutorisez 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.

Sur cette page