PixPin
Definições

Scripts

Utilize JavaScript para automatizar capturas e pins no PixPin, executar ações pela linha de comandos e consultar os parâmetros e limites das interfaces.

Os scripts do PixPin usam JavaScript para aceder a capturas, pins e operações de janelas. Pode guardar passos repetidos numa ação e acioná-la por atalho, menu da bandeja ou linha de comandos. «Scripts» é uma secção explicativa do manual; no software, o editor encontra-se em Configuração → Atalhos/Ações.

  • Capturar a janela ativaCapture e copie numa ação.
  • Área de captura fixaReutilize posição e dimensões.
  • Abrir um conjunto de referênciasPasse uma lista de ficheiros para afixar em lote.
Guarde as operações repetidas num script e associe-o a um atalho ou entrada do menu da bandeja. Os conteúdos ilustrados são fictícios.

Quando usar scripts

NecessidadeComo o script ajuda
Capturar sempre a mesma áreaFixar a posição e as dimensões, ou gerar uma área de tamanho definido centrada no rato
Reduzir os cliques na barra de ferramentasCopiar, afixar, guardar ou reconhecer diretamente após selecionar a área
Evitar a seleção manual em cada capturaCapturar diretamente a janela ativa, o ecrã sob o rato ou a área da última captura
Abrir diariamente um conjunto de ficheiros de referênciaCriar vários pins de uma vez com uma matriz de caminhos de ficheiros
Integrar operações com outras ferramentasExecutar texto de script ou um ficheiro .js pela linha de comandos

Para apenas mudar um atalho, ajustar uma entrada da bandeja ou evitar um programa, utilize as Definições de atalhos/ações. Os scripts são adequados para combinar operações ou especificar parâmetros.

Criar e executar o primeiro script

A predefinição preenche o nome e o script, aqui representado por linhas. Assinale a entrada do menu, aplique e volte à lista para definir o atalho.

Abra Configuração → Atalhos/Ações e clique em Adicionar Nova Ação. Escolha primeiro uma operação próxima da pretendida em Predefinição, por exemplo Captura de ecrã e... → Capturar e fixar.

Dê à ação um nome único e reveja ou altere o conteúdo de Script. A linha seguinte inicia uma captura e afixa o resultado após confirmar a seleção.

pixpin.screenShot(ShotAction.Pin);

Clique em Testar Script, conclua realmente uma captura e verifique o resultado. Se ocorrer um erro durante o teste, será apresentada uma mensagem.

Clique em Aplicar, regresse à lista e defina um atalho para a nova ação; também pode assinalar Menu da bandeja. Passe a executá-la pela entrada correspondente.

O teste executa realmente o script. Escolher outra predefinição substitui o conteúdo do editor e cancelar a janela não desfaz as operações já testadas. Os scripts das ações integradas não podem ser alterados; crie uma ação personalizada para obter uma variante.

Executar pela linha de comandos

Coloque o texto do script depois de -r e o caminho do ficheiro depois de -f. Se o PixPin já estiver em execução, o pedido é entregue à instância existente; no primeiro arranque, aguarda a inicialização antes de executar.

Windows PowerShell: substitua o caminho pelo local real de instalação:

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

Terminal do macOS: o exemplo assume a instalação na pasta Aplicações:

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

Escreva apenas JavaScript no ficheiro, sem delimitadores de blocos de código; se contiver chinês, recomenda-se UTF-8 com BOM. Prefira -f para scripts longos para reduzir problemas de escape de aspas, barras invertidas e $. Mantenha as aspas exteriores nos caminhos com espaços.

O regresso da linha de comandos não significa que a captura, o reconhecimento ou a gravação tenha terminado; esta entrada também não devolve ao chamador o valor da última linha como resultado estruturado. No macOS, a automatização não abre automaticamente a orientação de permissões para capturas interativas; conceda primeiro as permissões de gravação do ecrã e acessibilidade dentro do software.

Sintaxe suportada e execução

O editor aceita JavaScript. Os nomes de interfaces e constantes distinguem maiúsculas de minúsculas: escreva pixpin.screenShot, não pixpin.screenshot.

CategoriaConstruções comuns suportadas
Variáveis e dadosvar, let, const; números, cadeias, booleanos, matrizes, objetos e null
Condições e ciclosif / else, switch, for, while, for...of, break
Funções e classesfunction, funções de seta, parâmetros, return, class; não pode usar return diretamente fora de uma função
Expressões comunsAritmética e comparações, &&, ||, !, expressões ternárias, modelos de cadeia, desestruturação e ??
Tratamento de dadosObjetos integrados como Array, String, Math, Date, JSON, Map e Set
Exceçõestry / catch / finally, throw new Error(...)

O ambiente de scripts desta versão não suporta encadeamento opcional ?. nem async/await, e não permite import / export nos scripts comuns. Use if para verificar valores nulos e as interfaces do PixPin para operações por etapas.

Não existem window, document ou fetch do navegador, nem require, process ou fs do Node.js; setTimeout também não é disponibilizado. Não cole exemplos que dependam de páginas web, Node.js ou pacotes de terceiros. Suportar objetos também não significa que um objeto comum substitua o retângulo exigido por uma interface.

Execução sequencial sem esperar por operações manuais

As instruções JavaScript são executadas por ordem, mas uma chamada que abre a janela de captura apenas inicia a operação, sem esperar que conclua a seleção. Para «capturar e afixar», escreva diretamente pixpin.screenShot(ShotAction.Pin); não coloque simplesmente o início da captura e a afixação da área de transferência em duas linhas sucessivas.

  • Executar após selecionarscreenShot: selecione e depois copie ou afixe.
  • Área definida, captura imediatadirectScreenShot: use uma área conhecida sem seleção manual.
Ambas podem copiar imagens, mas em momentos diferentes. O contorno tracejado apenas indica a área do script e não aparece na execução.

O motor de scripts é reutilizado. Coloque as variáveis temporárias dentro de funções para evitar interferências entre execuções. Os exemplos de várias linhas deste artigo usam uma função executada imediatamente:

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

O () no fim da função executa-a imediatamente. Não utilize um ciclo infinito para esperar pelo fim da captura, pois bloqueia a execução da interface. Pode usar console.log(...) para registos, mas a janela de edição não tem uma consola interativa.

Objetos globais, parâmetros e valores devolvidos

Nome:Finalidade
pixpinAceder às interfaces de captura, pins, atraso, janelas e comandos do sistema
ShotActionDefinir a operação após capturar, por exemplo ShotAction.Copy
PixConstDefinir uma área especial, por exemplo PixConst.SpRectActiveWindow

Introduza diretamente números, booleanos e cadeias; utilize matrizes de cadeias para listas de ficheiros. Prefira caminhos absolutos. Em JavaScript, pode escrever D:/Images/example.png ou, com barras invertidas, D:\\Images\\example.png.

Gere os retângulos com uma das três interfaces seguintes e passe-os sem alterações às interfaces posteriores:

ChamadaSignificado
pixpin.genRect(x, y, width, height)Especificar a posição e as dimensões no ecrã
pixpin.genRectUnderCursor(width, height)Gerar uma área centrada no rato e ajustar a posição ao ecrã
pixpin.getSpRect(type)Obter uma área especial, utilizando uma constante PixConst em type

As coordenadas e dimensões são coordenadas lógicas do ecrã; a largura e a altura devem ser positivas e as coordenadas podem ser negativas em vários ecrãs. Se faltar espaço junto ao rato, genRectUnderCursor reduz a área proporcionalmente para caber no ecrã. A escala do ecrã e as definições de gravação também afetam as dimensões em píxeis da imagem exportada. Não passe {x: 100, y: 100, width: 640, height: 480} diretamente a uma interface que exige um retângulo: esses campos não geram uma área de captura.

O valor true significa normalmente que o pedido foi aceite, não que o utilizador concluiu a interação; consulte as tabelas seguintes para o significado de cada valor devolvido. Interfaces sem valor devolvido não permitem determinar se a gravação teve êxito.

Exemplos prontos a adaptar

Capturar e copiar a janela ativa

Coloque primeiro o programa pretendido em primeiro plano e acione esta ação com um atalho global. A captura é imediata, sem seleção manual.

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

Ao clicar em Testar Script no editor, a janela ativa poderá ser a das definições; para avaliar o resultado, aplique a ação e acione-a a partir do programa pretendido.

Fixar a seleção e ajustá-la manualmente

Inicie uma captura normal e defina a seleção na posição (100, 100), com tamanho 640 × 480. Pode continuar a anotar na barra de ferramentas ou ajustar a seleção.

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

O nome setScreenShotRectRadius pode induzir em erro: define a proporção, não o raio dos cantos. Elimine a última linha se não pretender uma proporção fixa.

Capturar diretamente e guardar com a hora no nome

Este exemplo captura diretamente o ecrã sob o rato. Substitua o caminho pela sua pasta antes de executar; no macOS, pode utilizar um caminho como /Users/yourname/Pictures/....

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

A função de gravação expande as variáveis de tempo; consulte Variáveis de caminhos e nomes de ficheiros. Se já existir um ficheiro com o mesmo nome, a interface acrescenta um sufixo numérico e não mostra uma notificação. Não devolve o caminho guardado nem um indicador de êxito.

Afixar vários ficheiros de referência de uma vez

Substitua os caminhos da matriz por ficheiros existentes. Pode continuar a adicionar entradas no mesmo formato.

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

A interface ignora ficheiros inexistentes e devolve false se a matriz estiver vazia ou nenhum caminho existir. true indica que os ficheiros existentes foram entregues à função de afixação, sem garantir que todos os formatos possam ser apresentados como imagens.

Esperar três segundos e iniciar uma captura

A forma mais simples mostra uma contagem decrescente que pode cancelar:

pixpin.delayScreenShotWithTips(3);

Para definir a posição e as dimensões, use a interface seguinte. Os parâmetros são, por ordem: segundos, especificar posição, coordenada horizontal, coordenada vertical, especificar dimensões, largura, altura, parâmetro reservado e proporção.

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

Alternar o estado com a mesma ação

O exemplo seguinte inverte o estado de desativação atual: suspende os restantes atalhos globais quando estão ativos e recupera-os na execução seguinte.

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

A tecla desta ação permite sair desta desativação manual; continua, porém, sujeita à lista de programas ignorados e ao estado de jogo em ecrã inteiro do Windows.

Referência rápida das interfaces personalizadas

Seguem-se as interfaces de operações do utilizador disponíveis nos scripts de ações comuns. rect deve vir das interfaces de geração de áreas e action utiliza ShotAction. Os parênteses retos indicam parâmetros opcionais e não se escrevem no código real.

Capturas e áreas

InterfaceParâmetros e finalidade
screenShot(action)Iniciar a seleção e executar action quando for confirmada. Devolve um booleano; pode devolver false se já existir uma captura, estiver a ser usada uma captura longa ou faltarem permissões
screenShotAndEdit()Equivale a screenShot(ShotAction.Edit); apresenta a barra de ferramentas após selecionar a área
screenShotAndCopy()Equivale a screenShot(ShotAction.Copy)
screenShotAndPin()Equivale a screenShot(ShotAction.Pin)
screenShotAndCopyOcr()Equivale a screenShot(ShotAction.CopyOcrText); reconhece e copia o texto
openCustomScreenShot()Abrir a janela de captura personalizada/com atraso para introduzir os parâmetros manualmente
setScreenShotRect(x, y, width, height)Definir a seleção de uma janela de captura já criada; recomenda-se chamar após screenShotAndEdit() ter êxito. Devolve false se não existir uma janela de captura
setScreenShotRectRadius(ratio)Definir a proporção da seleção retangular, por exemplo 16 / 9; não define cantos arredondados. A proporção não se aplica a seleções por caminho
switchScreenshotMode()Mudar para o modo de captura seguinte quando a janela de captura está visível; devolve false se não houver uma janela disponível
directScreenShot(rect, action)Capturar diretamente uma área conhecida e executar a ação, sem valor devolvido. Adequado para copiar, afixar, guardar e outras saídas
directScreenShotSpRect(type, action)Capturar diretamente uma área indicada por PixConst, equivalente a chamar primeiro getSpRect(type) e depois capturar diretamente
directScreenShotAndSaveTo(rect, filePath)Capturar diretamente e guardar no caminho completo indicado; suporta variáveis de gravação e acrescenta um sufixo numérico em caso de nome repetido. Sem valor devolvido

A tabela omite o prefixo repetido pixpin.; a chamada real é, por exemplo, pixpin.screenShotAndCopy(). A captura direta não abre os editores ou gravadores correspondentes se passar Edit, ImageEdit, LongShot ou GifShot; para esses processos interativos, use screenShot(action) ou as interfaces específicas seguintes.

Atraso, captura longa e gravação do ecrã

InterfaceParâmetros e finalidade
delayScreenShot(seconds, hasPos, x, y, hasSize, width, height, radius, ratio)Iniciar a edição de captura após um atraso mínimo de 0,2 segundos. Uma nova chamada substitui a tarefa deste tipo ainda não acionada; true indica que a tarefa temporizada foi definida
delayScreenShotWithTips(seconds[, rect])Mostrar uma contagem decrescente cancelável, com segundos inteiros e um mínimo de 1 segundo; pode receber uma área ou permitir seleção manual se esta for omitida. Sem valor devolvido
longScreenShot(rect)Abrir a janela de captura longa para a área indicada; se já existir, ajustar a sua área
openLongScreenShot(x, y, width, height)Definir a área de captura longa com quatro números, sem gerar primeiro um retângulo
gifScreenShot(rect)Abrir a janela de gravação do ecrã para a área indicada; se já existir, ajustar a área. O nome conserva GIF, mas o formato final é escolhido na interface de gravação
openGifScreenShot(x, y, width, height)Definir a área de gravação com quatro números
gifShotPause()Alternar entre pausa e continuação; devolve false se não existir janela de gravação
hasLongShotWidget()Indicar se já existe uma janela de captura longa

Em delayScreenShot, se hasPos e hasSize forem true, é usado o retângulo indicado; se apenas hasSize for true, a área com as dimensões indicadas é gerada junto ao rato. Sem dimensões, mantém-se a seleção manual. radius não é utilizado atualmente: indique 0. Um ratio positivo define a proporção; use -1 se não for necessária.

Estas interfaces abrem ou controlam janelas; não significam que o deslocamento automático terminou ou que o vídeo foi exportado. As operações seguintes de captura longa e gravação continuam nas respetivas interfaces.

Pins e gestão em lote

InterfaceParâmetros e finalidade
pinFromClipBoard()Criar um pin a partir da área de transferência; durante uma captura normal ou longa, tentar afixar o resultado atual. O valor devolvido não permite determinar se a afixação da área de transferência teve êxito
pinFromFiles(files)files é uma matriz de caminhos; processa os ficheiros existentes e devolve false se a matriz estiver vazia ou nenhum ficheiro existir
pinSelectedFile()Afixar os ficheiros selecionados no gestor de ficheiros; devolve false se não houver seleção ou a leitura falhar. No macOS, envolve permissões de automatização
restoreLastClosedPin()Recuperar pins segundo as regras de restauro atuais e indicar se teve êxito
closeAllPin()Fechar as janelas de pin atuais pelo processo normal de fecho
hideOrShowAllPin() / isAllPinHide()Alternar a visibilidade de todos os pins / consultar se estão todos ocultos
hideOrShowPinsExceptSelected()Ocultar os pins que não estão selecionados e recuperá-los na chamada seguinte. Sem seleção, tentar usar o pin ativo; se também não existir, pedir que selecione primeiro
switchPinGroup()Acionar a mudança de grupo de pins
trigMousePenetration()Alternar o clique através no pin sob o rato; se não houver nenhum, desativar o clique através em todos
setAllPinToRoiMode() / unsetAllPinToRoiMode()Passar os pins para o modo de miniatura / recuperar a apresentação normal; aqui, ROI não significa criar um pin de janela
saveAllPinImageTo(folder)Guardar em lote as imagens exportáveis dos pins na pasta indicada, com nomes numerados e sufixos em caso de repetição; o parâmetro é uma pasta, não um nome completo de ficheiro
saveAllPinImageWithDialog()Pedir primeiro uma pasta e depois guardar em lote
destoryAllPin()Destruir todos os pins segundo as confirmações configuradas, sem restauro pelo fecho normal. A interface escreve-se realmente destory; não altere para destroy

Comandos do sistema e outras operações

InterfaceParâmetros e finalidade
translateClipboard()Enviar o conteúdo da área de transferência para tradução e indicar se o processo foi iniciado com êxito
disableShortcuts(disabled) / isDisableShortcuts()true suspende e false recupera os restantes atalhos globais / consultar esta desativação manual; a consulta não representa a lista de programas ignorados nem o estado de jogo
moveCursorBy(dx, dy)Mover o rato por um desvio, útil para ajustes finos; chamadas rápidas sucessivas têm aceleração, pelo que o deslocamento total não é necessariamente a soma dos parâmetros
toggleWindowTopmostUnderMouse()Alternar a janela sob o rato para sempre visível. No Windows, pode afetar janelas de outros programas; no macOS, só opera sobre janelas do próprio PixPin
openConfigurationWindow() / openDoc()Abrir a janela de definições / documentação
runSystem(command)Iniciar um programa externo e regressar imediatamente, sem valor devolvido; a cadeia inclui o programa e os argumentos
runSystemSync(command)Iniciar um programa externo e esperar de forma síncrona; o objeto devolvido contém code, output e error, respetivamente o código de saída do processo, a saída padrão e o erro padrão
quit()Sair do PixPin

runSystem e runSystemSync iniciam programas diretamente, sem passar automaticamente por um interpretador de terminal. Encadeamentos, redirecionamentos e comandos internos da shell não funcionam automaticamente; indique explicitamente o interpretador da plataforma se forem necessários. A cadeia do comando não pode estar vazia.

Por exemplo, pode abrir a calculadora com pixpin.runSystem("calc") no Windows ou pixpin.runSystem("/usr/bin/open -a Calculator") no macOS. O exemplo seguinte lê o resultado de um comando síncrono; substitua-o por um programa existente no sistema atual:

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

A espera síncrona ocupa temporariamente a interface do PixPin. A implementação atual tem um limite de espera predefinido de cerca de 30 segundos, sem um campo separado de «tempo esgotado»; code, por si só, também não permite saber se o processo arrancou corretamente. Use runSystem para regressar imediatamente.

Constantes de áreas e ações

PixConst: o que capturar

ConstanteÁrea
PixConst.SpRectScreenUnderMouseEcrã onde se encontra o rato
PixConst.SpRectAllScreenRetângulo formado por todos os ecrãs
PixConst.SpRectWindowUnderMouseJanela sob o rato
PixConst.SpRectActiveWindowJanela ativa
PixConst.SpRectLastShotRectSeleção da última captura; conclua primeiro uma captura válida

A área depende das janelas, do rato e do histórico no momento da execução. Não assuma que existe uma área utilizável sem janela ou histórico válidos.

ShotAction: o que fazer após selecionar

Todas as formas seguintes usam o prefixo ShotAction., por exemplo ShotAction.QuickSave.

ConstanteAção
EditContinuar a anotar e operar na barra de ferramentas de captura
Copy / PinCopiar a imagem / afixar
Save / QuickSaveAbrir a janela para guardar / usar a configuração de gravação rápida
CopyOcrTextReconhecer e copiar texto
TranslateTraduzir o conteúdo da captura
OcrTable / OcrDocumentReconhecimento de tabelas / documentos
LatexRecognitionReconhecimento de fórmulas
LongShot / GifShotEntrar na captura longa / gravação do ecrã
WinRoiCriar um pin de janela, apenas no Windows
PrintImprimir
CopyQRCodeTextReconhecer e copiar o conteúdo de um código QR
AirDropAirDrop, apenas no macOS
ImageEditAbrir uma janela independente de edição de imagem
CloseFechar esta captura

As constantes apenas escolhem funcionalidades existentes e não alteram as suas condições. Copiar, guardar e reconhecer podem continuar a depender das definições atuais ou de janelas interativas.

O que verificar em caso de erro

SintomaVerificação
SyntaxErrorVerifique aspas, parênteses e vírgulas, retire os delimitadores de blocos Markdown e confirme que não usa ?., async/await ou import
ReferenceErrorVerifique a declaração das variáveis, as maiúsculas e minúsculas e o âmbito
Método inexistente ou chamada sem efeitoVerifique as maiúsculas e a grafia das interfaces; gere retângulos pelas interfaces específicas e use matrizes nas listas de ficheiros
A captura mostra a janela de definiçõesA janela de definições está em primeiro plano durante Testar Script; aplique a ação, mude para o programa pretendido e experimente o atalho
A captura começa, mas não produz a imagem finalscreenShot(...) continua a exigir a seleção manual; para captura direta, use directScreenShot...
Não aparece uma notificação de gravaçãodirectScreenShotAndSaveTo não mostra notificações; verifique o caminho, a extensão e a pasta de saída
O atalho não aciona o scriptVerifique o registo das teclas, a desativação e a lista de programas ignorados; consulte Estado dos atalhos
A captura pela linha de comandos não responde no macOSConfirme primeiro as permissões de gravação do ecrã e acessibilidade no PixPin e certifique-se de que o sistema está desbloqueado

Pode capturar erros de script com try / catch, mas devolver false ou não devolver valor não lança automaticamente uma exceção. Ao depurar, execute uma operação e acrescente gradualmente parâmetros e passos; a ausência de erros não prova que todos os resultados estejam concluídos.

Nesta página