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

另请参阅

控制台控件处理程序

控制台函数

CreateProcess

ExitProcess

SetConsoleCtrlHandler