> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# On User Command

> FlexiCapture で On User Command イベントを使用して、CI_UserCommand 識別子とサンプルのハンドラーコードにより、カスタムメニュー項目とツールバーボタンを追加します。

<div id="when-it-is-launched">
  ## 起動時
</div>

このイベントは、ユーザーコマンド を呼び出したときに発生します (対応する項目がメインメニューまたはツールバーに追加されている場合) 。

ユーザーコマンド の 識別子 は、**CI\_UserCommand** **+ \<非負整数>** の形式で表すことができます。

<div id="parameters">
  ## パラメーター
</div>

| **名前**    | **型**                                                               | **アクセス**  | **説明**            |
| --------- | ------------------------------------------------------------------- | --------- | ----------------- |
| CommandId | [TCommandID](/ja/flexi-capture/appendix/scripts-shell/tcommandid)   | 読み取り/書き込み | ユーザーコマンドの識別子      |
| Context   | [IMainWindow](/ja/flexi-capture/appendix/scripts-shell/imainwindow) | 読み取り/書き込み | アプリケーションのメインウィンドウ |

<Note>
  メインメニューまたはツールバーにユーザーコマンドを追加するには、それぞれ [IMenu](/ja/flexi-capture/appendix/scripts-shell/imenu) インターフェイスと [IToolbar](/ja/flexi-capture/appendix/scripts-shell/itoolbar) インターフェイスの **AppendItem / InsertItem** および **AppendButton /InsertButton** メソッドを使用する必要があります。コマンド識別子には **CI\_UserCommand** または **CI\_UserCommand** **+ \<non-negative integer>** を使用する必要があります。
</Note>

以下のコード例は、コマンド識別子 **CI\_UserCommand + 1** を持つユーザーコマンドのメニュー項目を追加する方法を示しています。

```
ABBYY.FlexiCapture.ClientUI.TCommandID userCommand = ABBYY.FlexiCapture.ClientUI.TCommandID.CI_UserCommand;
ABBYY.FlexiCapture.ClientUI.TCommandID userCommand1 = (ABBYY.FlexiCapture.ClientUI.TCommandID) ((int)userCommand + 1);
IMenu menu = MainWindow.MainMenu[0].Submenu;
menu.AppendItem( userCommand1, "User command" );
```

ユーザーコマンド用に追加されたツールバーのボタンまたはメニュー項目は、On User Commandイベントのハンドラーが追加されていない限り、無効になります。

以下のコード例は、On User Commandイベントの処理を示しています。

```
ABBYY.FlexiCapture.ClientUI.TCommandID commandID = ( ABBYY.FlexiCapture.ClientUI.TCommandID )( CommandId );
ABBYY.FlexiCapture.ClientUI.TCommandID userCommand = ABBYY.FlexiCapture.ClientUI.TCommandID.CI_UserCommand;
ABBYY.FlexiCapture.ClientUI.TCommandID userCommand1 = (ABBYY.FlexiCapture.ClientUI.TCommandID) ((int)userCommand + 1);
if( commandID == userCommand1 ) {
<... call necessary methods here ...>
```
