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.
Quando usar scripts
| Necessidade | Como o script ajuda |
|---|---|
| Capturar sempre a mesma área | Fixar a posição e as dimensões, ou gerar uma área de tamanho definido centrada no rato |
| Reduzir os cliques na barra de ferramentas | Copiar, afixar, guardar ou reconhecer diretamente após selecionar a área |
| Evitar a seleção manual em cada captura | Capturar diretamente a janela ativa, o ecrã sob o rato ou a área da última captura |
| Abrir diariamente um conjunto de ficheiros de referência | Criar vários pins de uma vez com uma matriz de caminhos de ficheiros |
| Integrar operações com outras ferramentas | Executar 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
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.
| Categoria | Construções comuns suportadas |
|---|---|
| Variáveis e dados | var, let, const; números, cadeias, booleanos, matrizes, objetos e null |
| Condições e ciclos | if / else, switch, for, while, for...of, break |
| Funções e classes | function, funções de seta, parâmetros, return, class; não pode usar return diretamente fora de uma função |
| Expressões comuns | Aritmética e comparações, &&, ||, !, expressões ternárias, modelos de cadeia, desestruturação e ?? |
| Tratamento de dados | Objetos integrados como Array, String, Math, Date, JSON, Map e Set |
| Exceções | try / 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.
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 |
|---|---|
pixpin | Aceder às interfaces de captura, pins, atraso, janelas e comandos do sistema |
ShotAction | Definir a operação após capturar, por exemplo ShotAction.Copy |
PixConst | Definir 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:
| Chamada | Significado |
|---|---|
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
| Interface | Parâ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ã
| Interface | Parâ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
| Interface | Parâ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
| Interface | Parâ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.SpRectScreenUnderMouse | Ecrã onde se encontra o rato |
PixConst.SpRectAllScreen | Retângulo formado por todos os ecrãs |
PixConst.SpRectWindowUnderMouse | Janela sob o rato |
PixConst.SpRectActiveWindow | Janela ativa |
PixConst.SpRectLastShotRect | Seleçã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.
| Constante | Ação |
|---|---|
Edit | Continuar a anotar e operar na barra de ferramentas de captura |
Copy / Pin | Copiar a imagem / afixar |
Save / QuickSave | Abrir a janela para guardar / usar a configuração de gravação rápida |
CopyOcrText | Reconhecer e copiar texto |
Translate | Traduzir o conteúdo da captura |
OcrTable / OcrDocument | Reconhecimento de tabelas / documentos |
LatexRecognition | Reconhecimento de fórmulas |
LongShot / GifShot | Entrar na captura longa / gravação do ecrã |
WinRoi | Criar um pin de janela, apenas no Windows |
Print | Imprimir |
CopyQRCodeText | Reconhecer e copiar o conteúdo de um código QR |
AirDrop | AirDrop, apenas no macOS |
ImageEdit | Abrir uma janela independente de edição de imagem |
Close | Fechar 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
| Sintoma | Verificação |
|---|---|
SyntaxError | Verifique aspas, parênteses e vírgulas, retire os delimitadores de blocos Markdown e confirme que não usa ?., async/await ou import |
ReferenceError | Verifique a declaração das variáveis, as maiúsculas e minúsculas e o âmbito |
| Método inexistente ou chamada sem efeito | Verifique 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ções | A 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 final | screenShot(...) continua a exigir a seleção manual; para captura direta, use directScreenShot... |
| Não aparece uma notificação de gravação | directScreenShotAndSaveTo não mostra notificações; verifique o caminho, a extensão e a pasta de saída |
| O atalho não aciona o script | Verifique 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 macOS | Confirme 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.