PixPin
設定

スクリプト

PixPinのスクリプトを作成して実行し、JavaScriptの構文、撮影とピン留めのAPI、引数、定数、プラットフォームの違いや問題の調べ方を確認します。

PixPinのスクリプトはJavaScriptで撮影、ピン留め、ウィンドウ操作を呼び出します。繰り返す手順をアクションに保存し、キー、トレイメニュー、コマンドラインから実行できます。「スクリプト」はマニュアルの説明章で、アプリ内の編集入口は設定 → ショートカット/アクションです。

  • アクティブウィンドウを撮影1つのアクションで撮影とコピー。
  • 固定の撮影範囲同じ位置とサイズを繰り返し使用。
  • 参考画像をまとめて開くファイル一覧で一括ピン留め。
繰り返す操作をスクリプトにし、ショートカットやトレイメニューに登録します。図の内容はすべて架空です。

スクリプトに適した用途

目的スクリプトの使い方
いつも同じ範囲を撮りたい位置とサイズを固定するか、ポインターを基準に指定サイズの範囲を作ります
ツールバーの操作を減らしたい選択後すぐにコピー、ピン留め、保存、認識を実行します
毎回の手動選択を省きたいアクティブウィンドウ、ポインターのある画面、前回の範囲を直接撮ります
毎日同じ参考ファイルを開きたいパスの配列から複数のピンを一度に作ります
他のツールと連携したいコマンドラインでスクリプト文字列や.jsファイルを実行します

キー変更、トレイ項目の調整、特定アプリの除外だけならショートカット/アクション設定を使えます。スクリプトは複数操作の組み合わせや引数指定に向いています。

最初のスクリプトを作って実行する

プリセットで名前とスクリプトが入力されます。図ではスクリプトを線で省略しています。トレイへの追加を選んで適用し、一覧に戻ってキーを設定します。

設定 → ショートカット/アクションを開いて新しいアクションを追加をクリックし、プリセットから近い操作を選びます。例はスクリーンショットして... → スクリーンショットしてピンです。

重複しない名前を入力し、スクリプト欄を確認または編集します。次の1行は撮影を開始し、選択確定後にピン留めします。

pixpin.screenShot(ShotAction.Pin);

スクリプトをテストをクリックして実際に撮影し、結果を確認します。失敗時にはエラーが表示されます。

適用で一覧に戻り、新しいアクションにキーを設定します。トレイメニューも選べば、その入口から実行できます。

テストは実際の実行です。別のプリセットを選ぶと編集内容が上書きされ、ウィンドウをキャンセルしても実行済み操作は戻りません。組み込みスクリプトは変更できないため、別のカスタムアクションを作ってください。

コマンドラインで実行する

-rの後にスクリプト文字列、-fの後にファイルパスを指定します。起動中なら既存のPixPinに渡し、初回起動時は初期化完了後に実行します。

Windows PowerShell: 実際のインストール先に置き換えてください。

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

macOSのターミナル: アプリケーションフォルダーにインストールした場合の例です。

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

ファイルにはJavaScriptだけを書き、コードブロックの記号は不要です。中国語を含む場合はBOM付きUTF-8を推奨します。長いスクリプトは-fを使うと、引用符、バックスラッシュ、$のエスケープを減らせます。空白のあるパスは引用符で囲みます。

コマンドの終了は撮影、認識、保存の完了を意味しません。最後の式の値を構造化結果として返す入口でもありません。macOSの自動呼び出しは対話撮影の権限案内を自動表示しないため、先にアプリ内で画面収録とアクセシビリティを許可してください。

対応構文と実行方法

JavaScriptを入力できます。APIと定数名は大文字小文字を区別します。pixpin.screenShotをpixpin.screenshotに変えないでください。

分類主な対応構文
変数とデータvar、let、const、数値、文字列、真偽値、配列、オブジェクト、null
条件分岐とループif / else、switch、for、while、for...of、break
関数とクラスfunction、アロー関数、引数、return、class。関数の外に直接returnは書けません
主な式算術、比較、&&、||、!、三項演算子、テンプレート文字列、分割代入、??
データ処理Array、String、Math、Date、JSON、Map、Setなどの組み込みオブジェクト
例外try / catch / finally、throw new Error(...)

現行環境はオプショナルチェーン?.とasync/awaitに対応せず、通常のスクリプトでimport / exportも使えません。空値判定はif、段階的操作はPixPinのAPIを使います。

ブラウザーのwindow、document、fetchやNode.jsのrequire、process、fsはなく、setTimeoutもありません。ウェブ、Node.js、外部パッケージ依存の例をそのまま貼らないでください。オブジェクト対応でも、通常のオブジェクトがAPIの矩形を代用できるわけではありません。

順次実行は手動操作を待たない

文は順番に実行されますが、撮影ウィンドウを開く呼び出しは開始するだけで選択完了を待ちません。撮影後にピン留めするならpixpin.screenShot(ShotAction.Pin)を使い、撮影開始とクリップボードのピン留めを単純に2行並べないでください。

  • 範囲確定後に実行screenShot:手動で範囲を確定してコピーやピン留め。
  • 指定範囲を即座に撮影directScreenShot:既知の範囲を使い、手動選択は不要。
どちらも画像をコピーできますが、実行のタイミングが異なります。右の破線は指定範囲の説明用で、実行時には表示されません。

エンジンは再利用されます。繰り返し実行の干渉を避けるため、一時変数はできるだけ関数内に置きます。複数行の例は即時実行関数を使っています。

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

最後の()が即時実行を表します。無限ループで撮影完了を待つとUIスレッドを占有します。console.log(...)でログを出せますが、編集画面に対話コンソールはありません。

グローバルオブジェクト、引数、戻り値

名前:用途
pixpin撮影、ピン留め、遅延、ウィンドウ、システムコマンドのAPIを呼び出します
ShotActionShotAction.Copyなど、撮影後の操作を指定します
PixConstPixConst.SpRectActiveWindowなど、特殊範囲を指定します

数値、真偽値、文字列は直接指定し、ファイル一覧は文字列配列にします。絶対パスを推奨します。JavaScriptのパスはD:/Images/example.png、バックスラッシュならD:\\Images\\example.pngと書きます。

矩形は次の3つのAPIで作り、そのまま後続のAPIへ渡してください。

呼び出し意味
pixpin.genRect(x, y, width, height)画面上の位置とサイズを指定します
pixpin.genRectUnderCursor(width, height)ポインターを中心に範囲を作り、画面に収まる位置に調整します
pixpin.getSpRect(type)特殊範囲を取得します。typeにはPixConstの定数を使います

位置とサイズは画面の論理座標です。幅と高さは正の値とし、マルチディスプレイの座標は負になることがあります。周囲が狭いとgenRectUnderCursorは比率を保って縮小します。出力ピクセル数は表示倍率と保存設定にも影響されます。矩形が必要なAPIへ{x: 100, y: 100, width: 640, height: 480}を渡しても、その値から撮影範囲は作られません。

trueは通常、要求の受付を表し、ユーザー操作の完了ではありません。各APIの戻り値は後の表を確認してください。戻り値のないAPIでは保存成功を判断できません。

書き換えて使える例

アクティブウィンドウを撮影してコピー

対象アプリを前面にし、グローバルショートカットで実行します。手動選択なしですぐに撮影します。

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

編集画面のスクリプトをテストでは設定ウィンドウがアクティブな場合があります。適用してから対象アプリで実行し、結果を確認してください。

範囲を固定してから手動調整

通常の撮影を開始し、座標(100, 100)、サイズ640 × 480を指定します。ツールバーで注釈や範囲の調整もできます。

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

setScreenShotRectRadiusは名前と異なり、角丸半径ではなくアスペクト比を設定します。比率を固定しない場合は最後の行を削除します。

直接撮影し、日時付きで保存

ポインターのある画面を直接撮影します。実行前に保存先を変更してください。macOSでは/Users/yourname/Pictures/...などを使えます。

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

時刻の変数は保存機能で展開されます。パスとファイル名の変数を参照してください。同名時は数字を追加し、保存通知は表示しません。保存先や成功フラグも返しません。

複数の参考ファイルを一度にピン留め

配列内のパスを実在するファイルに置き換えます。同じ形式で追加できます。

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

存在しないファイルは飛ばし、空配列または全パスが存在しないとfalseを返します。trueは既存ファイルをピン機能へ渡した意味で、どの形式も画像として表示できる保証ではありません。

3秒待って撮影開始

キャンセル可能なカウントダウンを出す最も簡単な書き方です。

pixpin.delayScreenShotWithTips(3);

位置とサイズを指定する場合は次のAPIを使います。左から秒数、位置指定の有無、x、y、サイズ指定の有無、幅、高さ、予約引数、アスペクト比です。

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

同じアクションで状態を切り替える

無効状態を反転します。有効時は他のグローバルショートカットを停止し、もう一度押すと再開します。

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

このキーは明示的な停止を解除できますが、除外リストやWindowsの全画面ゲーム状態による制限は残ります。

カスタムAPI早見表

通常のアクションスクリプトで使えるユーザー操作APIです。rectは矩形生成API、actionはShotActionを使います。角括弧は省略可能な引数を示し、実際のコードには書きません。

撮影と範囲

API引数と用途
screenShot(action)選択開始後、確定時にactionを実行します。真偽値を返し、撮影画面が開いている、長い撮影中、権限不足などではfalseになる場合があります
screenShotAndEdit()screenShot(ShotAction.Edit)と同じで、選択後に撮影ツールバーを表示します
screenShotAndCopy()screenShot(ShotAction.Copy)と同じです
screenShotAndPin()screenShot(ShotAction.Pin)と同じです
screenShotAndCopyOcr()screenShot(ShotAction.CopyOcrText)と同じで、認識後に文字をコピーします
openCustomScreenShot()カスタム/遅延撮影画面を開いて手動で引数を設定します
setScreenShotRect(x, y, width, height)作成済み撮影画面の範囲を設定します。screenShotAndEdit()成功後の呼び出しを推奨します。画面がなければfalseです
setScreenShotRectRadius(ratio)矩形範囲の比率を16 / 9などに設定します。角丸ではなく、パス選択には適用しません
switchScreenshotMode()撮影画面の表示中に次の撮影モードへ切り替えます。利用可能な画面がなければfalseです
directScreenShot(rect, action)既知の範囲を直接撮影し、操作を実行します。戻り値はなく、コピー、ピン留め、保存などに適しています
directScreenShotSpRect(type, action)PixConstの範囲を直接撮影します。getSpRect(type)を取得してから直接撮影するのと同じです
directScreenShotAndSaveTo(rect, filePath)完全な保存パスへ直接撮影します。保存変数と同名時の数字追加に対応し、戻り値はありません

表ではpixpin.を省略しています。実際はpixpin.screenShotAndCopy()などと書きます。直接撮影にEdit、ImageEdit、LongShot、GifShotを渡しても編集・録画画面は開きません。必要な場合はscreenShot(action)か専用APIを使ってください。

遅延、長い撮影、画面録画

API引数と用途
delayScreenShot(seconds, hasPos, x, y, hasSize, width, height, radius, ratio)遅延後に撮影編集を開始します。最短0.2秒で、同種の未実行タイマーは新しい呼び出しで置き換わります。trueはタイマー設定済みを表します
delayScreenShotWithTips(seconds[, rect])キャンセル可能なカウントダウンを表示します。秒は整数で最低1秒です。範囲を渡すか、省略して後から選択できます。戻り値はありません
longScreenShot(rect)指定範囲の長い撮影画面を開き、既存画面があれば範囲を変更します
openLongScreenShot(x, y, width, height)矩形を先に作らず、4つの数値で長い撮影の範囲を指定します
gifScreenShot(rect)指定範囲の録画画面を開くか既存範囲を変更します。名前にGIFが残っていますが、最終形式は録画画面で決まります
openGifScreenShot(x, y, width, height)4つの数値で録画範囲を指定します
gifShotPause()一時停止/再開を切り替えます。録画画面がなければfalseです
hasLongShotWidget()長い撮影画面の有無を返します

delayScreenShotはhasPosとhasSizeが両方trueなら指定矩形を使います。hasSizeだけがtrueならポインター基準で指定サイズを作り、サイズ未指定なら手動選択です。radiusは未使用なので0、正のratioは比率指定で、不要なら-1にします。

これらは画面を開く/制御するAPIであり、自動スクロール完了や動画出力済みを意味しません。続きは各画面で操作します。

ピンと一括管理

API引数と用途
pinFromClipBoard()クリップボードからピンを作ります。撮影中や長い撮影中は現在の結果をピン留めしようとします。戻り値ではクリップボード貼り付けの成功を判定できません
pinFromFiles(files)filesはファイルパス配列で、存在するファイルを処理します。空または実在ファイルがなければfalseです
pinSelectedFile()ファイルマネージャーの選択ファイルをピン留めします。未選択や取得失敗はfalseです。macOSではオートメーション権限が関係します
restoreLastClosedPin()既存ルールでピンを復元し、成功したか返します
closeAllPin()通常の終了手順で現在のピンウィンドウを閉じます
hideOrShowAllPin() / isAllPinHide()全ピンの表示切り替え/全非表示状態の確認です
hideOrShowPinsExceptSelected()選択以外を隠し、再実行で戻します。未選択ならアクティブピンを使い、それもなければ選択を促します
switchPinGroup()ピングループの切り替えを実行します
trigMousePenetration()ポインター下のピンの透過を切り替え、ピン上にない場合は全ピンの透過を解除します
setAllPinToRoiMode() / unsetAllPinToRoiMode()サムネイル表示への切り替え/通常表示の復元です。ここでのROIはウィンドウピン作成ではありません
saveAllPinImageTo(folder)出力可能なピン画像を指定フォルダーへ連番付きで一括保存し、同名には接尾辞を付けます。引数は完全なファイル名ではなくフォルダーです
saveAllPinImageWithDialog()フォルダーを選択してから一括保存します
destoryAllPin()確認設定に従って全ピンを破棄し、通常の閉じたピンの復元はできません。実際の綴りはdestoryです。destroyに直さないでください

システムコマンドとその他の操作

API引数と用途
translateClipboard()クリップボードを翻訳に渡し、開始できたか返します
disableShortcuts(disabled) / isDisableShortcuts()trueで他のグローバルキーを停止、falseで復帰/明示停止状態を取得します。除外リストやゲーム状態を表す結果ではありません
moveCursorBy(dx, dy)ポインターを相対移動します。微調整に使えますが、高速連続呼び出しは加速し、移動量は単純な合計とは限りません
toggleWindowTopmostUnderMouse()ポインター下のウィンドウの最前面表示を切り替えます。Windowsは他アプリにも使え、macOSはPixPin自身のウィンドウだけです
openConfigurationWindow() / openDoc()設定画面/使用マニュアルを開きます
runSystem(command)外部プログラムを起動してすぐ戻ります。戻り値はなく、文字列にプログラムと引数を含めます
runSystemSync(command)外部プログラムを起動して同期的に待ちます。戻るオブジェクトのcode、output、errorは終了コード、標準出力、標準エラーです
quit()PixPinを終了します

runSystemとrunSystemSyncはインタープリターを通さず直接起動します。パイプ、リダイレクト、シェル組み込みは自動では使えません。必要ならOSのインタープリターを明示します。空のコマンド文字列は使えません。

電卓を開くには、Windowsはpixpin.runSystem("calc")、macOSはpixpin.runSystem("/usr/bin/open -a Calculator")を使えます。次は同期結果の取得例です。実在するプログラムに置き換えてください。

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

同期待機中はPixPinのUIを一時的に占有します。既定の待機上限は約30秒で、専用のタイムアウト項目は返しません。codeだけでは正常起動を判定できません。すぐ戻したい場合はrunSystemを使います。

範囲とアクションの定数

PixConst:撮影する場所

定数範囲
PixConst.SpRectScreenUnderMouseポインターのあるディスプレイ
PixConst.SpRectAllScreen全画面を含む矩形
PixConst.SpRectWindowUnderMouseポインター下のウィンドウ
PixConst.SpRectActiveWindow現在のアクティブウィンドウ
PixConst.SpRectLastShotRect前回の撮影範囲。先に有効な撮影を1回完了してください

範囲は実行時のウィンドウ、ポインター、履歴に依存します。有効なウィンドウや履歴がなければ利用可能な範囲が得られるとは限りません。

ShotAction:選択後の操作

ShotAction.QuickSaveのように、ShotAction.を付けて使います。

定数操作
Edit撮影ツールバーで注釈と操作を続けます
Copy / Pin画像のコピー/ピン留め
Save / QuickSave保存画面を開く/クイック保存設定を使う
CopyOcrText文字を認識してコピー
Translate撮影内容の翻訳
OcrTable / OcrDocument表認識/文書認識
LatexRecognition数式認識
LongShot / GifShot長いスクリーンショット/画面録画を開始
WinRoiウィンドウピンの作成。Windowsのみ
Print印刷
CopyQRCodeTextQRコードを認識して内容をコピー
AirDropAirDrop。macOSのみ
ImageEdit独立した画像編集画面を開く
Close今回の撮影を閉じる

定数は既存機能を選ぶだけで、動作条件は変えません。コピー、保存、認識は設定や対話画面の影響を受けます。

エラー時の確認

症状確認方法
SyntaxError引用符、括弧、カンマを確認し、Markdownのコードブロック記号を消します。?.、async/await、importを使っていないか確認します
ReferenceError変数宣言、大小文字、スコープを確認します
メソッドがない/呼び出しが無効名前と綴りを確認します。矩形は専用API、ファイル一覧は配列を使います
設定画面が写ったスクリプトをテスト時に設定画面が前面でした。適用後、対象アプリでキーを試します
撮影は始まったが画像がないscreenShot(...)は手動選択が必要です。直接撮影にはdirectScreenShot...を使います
保存通知がないdirectScreenShotAndSaveToは通知を出しません。パス、拡張子、出力先を確認します
キーでスクリプトが動かない登録状態、無効化、除外リストを確認します。キーの状態を参照してください
macOSのコマンド撮影が応答しないPixPin内で画面収録とアクセシビリティ権限を確認し、システムのロックを解除します

スクリプトエラーはtry / catchで捕捉できますが、falseや戻り値なしは自動的な例外ではありません。まず1操作から始め、引数や組み合わせを増やします。エラーがないことを完了の証拠にしないでください。

このページの内容