# Python拡張コマンド

コマンドを実行時の動作をPythonスクリプトで記述できるコマンド。

スクリプトの内容をコマンドの設定としてアプリケーション内に保存できる(一元管理できる)。

Python 3.12以降が必要

## できること

- アプリ独自の機能として、画面操作に関するAPIを提供しており、ちょっとした自動操作の用途で使うことができる

  - 現在はキーボード入力のみ。マウス入力も今後実装予定

- アプリ設定で指定したPython環境でのライブラリのAPIを呼び出すことができるので、それらを利用して様々な処理を実行できる

## 設定画面

- `コマンドの名前`
  入力画面からコマンドを実行するためのキーワード

- `説明`
  何のためのコマンドかを記載しておくための説明欄

- `スクリプト` 実行する処理の内容をPythonスクリプトとして記述する

- `テスト実行`
  動作確認のためにスクリプトを実行する

- `構文チェック`
  `スクリプト`に入力した内容が構文的に正しいかをチェックする
  (チェックして正しいことを確認しないと設定を保存できない)

- `ホットキー`
  コマンドを呼び出すホットキーを定義する

## 動作の説明

- アプリ設定の`拡張機能`>`Pythonを利用する拡張機能の設定`で設定したPython環境の機能が利用できる

  - その環境に入っているライブラリを利用することが可能

- そのほかにアプリ独自のライブラリを提供する(後述)

  - キー入力やウインドウ関連の機能を提供する

    - もちろん、他のPythonライブラリを使うこともできる

## 制限事項

- Pythonスクリプトを並列で実行することはできない

  - 先行するPython拡張コマンドの実行が完了しないうちに後続のPython拡張コマンドが実行された場合、 先行のスクリプトが完了するまで、後続のスクリプトの実行は開始されない

  - その間、簡易電卓機能も利用できない

  - Python拡張コマンドが実行中かどうかを確認する機能や、実行を止める機能は提供していない

- スクリプト実行の上限は10秒まで

  - 実行開始後に10秒が経過したら、割り込みを発生させてスクリプトの実行をとめる

  - スクリプトの中でKeyboardInterruptを捕捉することにより継続させることはできる
    しかし、その状況で無限ループが発生した場合、アプリ本体を強制終了する以外にスクリプト実行を止めるすべはない

## Python用モジュール

アプリ独自のモジュールを提供している。
これらは`import`しなくても利用できる。

詳細はPython用モジュールのリファレンスを参照のこと。

## 実行時の動作

押下キー | 動作
--- | ---
`Enter` | スクリプトを実行する