<Return[G]><Top>

GenerateConsoleCtrlEvent

Declare Function Api_GenerateConsoleCtrlEvent& Lib "kernel32" Alias "GenerateConsoleCtrlEvent" (ByVal dwCtrlEvent&, ByVal dwProcessGroupId&)

Declare Function GenerateConsoleCtrlEvent Lib "kernel32" Alias "GenerateConsoleCtrlEvent" (ByVal dwCtrlEvent As Long, ByVal dwProcessGroupId As Long) As Long

呼び出し側プロセスのコンソールを共有するコンソールプロセスグループに、指定した信号を送信する。

パラメータ
dwCtrlEvent
    送信する信号の種類を指定する。次のいずれかの定数を指定する。

    定数                                

意味                                                

    CTRL_C_EVENT

CTRL+C 信号を送信する。

    CTRL_BREAK_EVENT

CTRL+BREAK 信号を送信する。

dwProcessGroupId
    信号の送信先プロセスグループの識別子を指定する。CreateProcess 関数を呼び出すときに CREATE_NEW_PROCESS_GROUP フラグ

    をセットすると、プロセスグループが作成される。新しいプロセスのプロセス識別子が新しいプロセスグループのプロセスグループ識別子にもな

    る。プロセスグループには、ルートプロセスの子孫となるすべてのプロセスが含まれる。信号を受け取るのは、グループ内の、呼び出し側プ

    ロセスと同じコンソールを共有するプロセスだけである。つまり、グループ内のあるプロセスが新しいコンソールを作成すると、そのプロセスは

    信号を受け取らない。そのプロセスの子孫も信号を受け取らない。
    dwProcessGroupId パラメータに 0 を指定すると、呼び出し側プロセスのコンソールを共有するすべてのプロセスに信号が送信される。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    GenerateConsoleCtrlEvent 関数を呼び出すと、信号の送信先グループに属するプロセスの制御ハンドラ関数が呼び出される。どのコンソー

    ルプロセスにも、ExitProcess 関数を呼び出す既定のハンドラ関数がある。コンソールプロセスは、SetConsoleCtrlHandler 関数を使って他

    のハンドラ関数をインストールしたり、削除したりできる。
    また、SetConsoleCtrlHandler 関数で継承可能属性を有効にすると、呼び出し側プロセスが CTRL+C 信号を無視するようになる。送信

    先プロセスでこの属性が有効になっていると、GenerateConsoleCtrlEvent 関数で CTRL+C 信号を送信しても、そのプロセスのハンドラ関

    数は呼び出されない。一方、CTRL+BREAK 信号を送信した場合、送信先プロセスのハンドラ関数が必ず呼び出される。