GenerateConsoleCtrlEvent 関数

呼び出しプロセスに関連付けられているコンソールを共有するコンソール プロセス グループに、指定された信号を送信します。

構文

BOOL WINAPI GenerateConsoleCtrlEvent(
  _In_ DWORD dwCtrlEvent,
  _In_ DWORD dwProcessGroupId
);

パラメーター

dwCtrlEvent [in]
生成される信号の種類。 このパラメーターには、次の値のいずれかを指定できます。

意味
CTRL_C_EVENT 0 Ctrl+C 信号を生成します。 この信号を特定のプロセス グループに限定することはできません。 dwProcessGroupId が 0 以外の場合、この関数は成功しますが、Ctrl+C 信号は、指定されたプロセス グループ内のプロセスによって受信されません。
CTRL_BREAK_EVENT 1 Ctrl+Break 信号を生成します。

dwProcessGroupId [in]
信号を受信するプロセス グループの識別子。 CreateProcess 関数の呼び出しで CREATE_NEW_PROCESS_GROUP フラグが指定されると、プロセス グループが作成されます。 新しいプロセスのプロセス識別子は、新しいプロセス グループのプロセス グループ識別子でもあります。 プロセス グループには、ルート プロセスの子孫であるすべてのプロセスが含まれます。 呼び出しプロセスと同じコンソールを共有するグループ内のプロセスだけが信号を受信します。 つまり、グループ内のプロセスが新しいコンソールを作成した場合、そのプロセスは信号を受信せず、その子孫も受信しません。

このパラメーターが 0 の場合、呼び出しプロセスのコンソールを共有するすべてのプロセスで信号が生成されます。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

GenerateConsoleCtrlEvent により、ターゲット グループ内のプロセスの制御ハンドラー関数が呼び出されます。 すべてのコンソールプロセスには、各プロセスのハンドラーの一覧には、ExitProcess 関数を呼び出すデフォルトのハンドラー関数が含まれています。 コンソール プロセスでは、SetConsoleCtrlHandler 関数を使用して、その他のハンドラー関数をインストールまたは削除できます。

SetConsoleCtrlHandler では、呼び出しプロセスが Ctrl+C 信号を無視する継承可能な属性を有効にすることもできます。 GenerateConsoleCtrlEvent がこの属性が有効になっているプロセスに Ctrl+C 信号を送信する場合、そのプロセスのハンドラー関数は呼び出されません。 Ctrl+BREAK 信号では、常にハンドラー関数が呼び出されます。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー ConsoleApi2.h(WinCon.h 経由、Windows.h を含む)
ライブラリ Kernel32.lib
[DLL] Kernel32.dll

関連項目

コンソールのコントロール ハンドラー

コンソール関数

CreateProcess

ExitProcess

SetConsoleCtrlHandler