是否有可用的最佳实践和代码片段,说明如何在Delphi控制台应用程序中处理Ctrl + C?
我找到了一些文章,它们提供了一些关于调试器可能存在的问题的信息,包括异常处理,DLL的卸载,stdin的关闭,以及例如这个CodeGear论坛线程的最终化.
Nic*_*kis 17
从Windows API(MSDN):
BOOL WINAPI SetConsoleCtrlHandler(
PHANDLER_ROUTINE HandlerRoutine, // address of handler function
BOOL Add // handler to add or remove
);
Run Code Online (Sandbox Code Playgroud)
HandlerRoutine函数是控制台进程指定处理进程接收的控制信号的函数.该函数可以具有任何名称.
BOOL WINAPI HandlerRoutine(
DWORD dwCtrlType // control signal type
);
Run Code Online (Sandbox Code Playgroud)
在Delphi中,处理程序例程应该是这样的:
function console_handler( dwCtrlType: DWORD ): BOOL; stdcall;
begin
// Avoid terminating with Ctrl+C
if ( CTRL_C_EVENT = dwCtrlType ) then
result := TRUE
else
result := FALSE;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4342 次 |
| 最近记录: |