如何在单击关闭按钮时通知控制台窗口程序?

mjn*_*mjn 4 delphi winapi

当用户通过单击关闭按钮(而不是使用Ctrl + C)终止它时,Windows API是否提供了一种在控制台窗口中通知正在运行的Delphi应用程序的方法?

相关问题:如何在Delphi控制台应用程序中处理Ctrl + C?

mjn*_*mjn 11

OS通过"控制信号"向控制台程序通知各种事件.调用SetConsoleCtrlHandler配置OS的功能以调用以传递信号.关闭窗口的信号是CTRL_CLOSE_EVENT.

function ConsoleEventProc(CtrlType: DWORD): BOOL; stdcall;
begin

  if (CtrlType = CTRL_CLOSE_EVENT) then
  begin
    // optionally run own code here
    // ...

  end;

  Result := True; 
end;

...

begin
  SetConsoleCtrlHandler(@ConsoleEventProc, True);
  // my application code here
  // ...
end.
Run Code Online (Sandbox Code Playgroud)