【问题标题】:How can a console window program be notified when its close button is clicked?单击关闭按钮时如何通知控制台窗口程序?
【发布时间】:2012-01-08 11:26:17
【问题描述】:

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

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

【问题讨论】:

  • 哦,来吧,链接Q包含答案!以与此处所示完全相同的方式处理 CTRL_CLOSE_EVENT 通知。
  • 也许,@User,但寻找this 问题答案的人不会点击that 问题标题。两个不同的问题有相同或相似的答案是可以的。某人发布他或她已经知道答案的问题也是可以的。方便其他人日后找到答案。
  • @RobKennedy,也许吧?官方文档(在 David Heeferman 添加直接链接之前)距离这个问题只有两次点击。是什么让您认为那些懒得执行这两次点击的人在同一问题的下一个副本中执行相同的两次点击?
  • 是的,@User,如果人们需要的话。为什么不呢?

标签: delphi winapi


【解决方案1】:

操作系统通过“控制信号”通知控制台程序各种事件。拨打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.

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 2015-05-29
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2014-07-21
    相关资源
    最近更新 更多