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

时间:2012-01-08 11:26:18

标签: delphi winapi

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

相关问题:How do I handle Ctrl+C in a Delphi console application?

1 个答案:

答案 0 :(得分:11)

操作系统通过“控制信号”向控制台程序通知各种事件。致电SetConsoleCtrlHandler以配置a function for the OS to call以传递信号。关闭窗口的信号为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.