GenerateConsoleCtrlEvent 函数
将指定的信号发送到控制台进程组,该组共享与调用进程关联的控制台。
语法
BOOL WINAPI GenerateConsoleCtrlEvent(
_In_ DWORD dwCtrlEvent,
_In_ DWORD dwProcessGroupId
);
参数
dwCtrlEvent [in]
要生成的信号的类型。 此参数的取值可为下列值之一。
值 | 含义 |
---|---|
CTRL_C_EVENT 0 | 生成 CTRL+C 信号。 此信号不能限制为特定进程组。 如果 dwProcessGroupId 为非零值,则此函数将成功,但指定进程组中的进程不会接收 CTRL+C 信号。 |
CTRL_BREAK_EVENT 1 | 生成 CTRL+BREAK 信号。 |
dwProcessGroupId [in]
要接收信号的进程组的标识符。 在对 CreateProcess 函数的调用中指定 CREATE_NEW_PROCESS_GROUP 标志时,将创建进程组。 新进程的进程标识符也是新进程组的进程组标识符。 进程组包括属于根进程后代的所有进程。 只有组中与调用进程共享同一控制台的进程才能接收信号。 换句话说,如果组中的进程创建了一个新控制台,则该进程不会接收信号,也不会接收其后代。
如果此参数为零,则会在共享调用进程的控制台的所有进程中生成信号。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
GenerateConsoleCtrlEvent 会导致调用目标组中进程的控制处理程序函数。 所有控制台进程都有一个调用 ExitProcess 函数的默认处理程序函数。 控制台进程可以使用 SetConsoleCtrlHandler 函数来安装或删除其他处理程序函数。
SetConsoleCtrlHandler 还可以启用可继承属性,使调用进程忽略 CTRL+C 信号。 如果 GenerateConsoleCtrlEvent 向启用了此属性的进程发送 CTRL+C 信号,则不会调用该进程的处理程序函数。 CTRL+BREAK 信号始终会导致调用处理程序函数。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
标头 | ConsoleApi2.h (via WinCon.h, include Windows.h) |
库 | Kernel32.lib |
DLL | Kernel32.dll |