windows 系统有一个叫做system hook的技术,用于让你对系统api做些手脚。
你可以通过注册一个新的TerminateProcess函数钩子,当系统调用这个函数时,就会调用你的函数,你的函数可以判断这个进程是不是你的程序,比如通过窗口的title,class什么的。
如果不是你的窗口,就调用原始的TerminateProcess,如果是你的窗口,就直接return.
另外,你也可以试试重载你的C#程序的WinProc方法,对于WM_CLOSE, WM_DESTORY, WM_QUIT之类的消息进行忽略,只对于自己发出的关闭才正常响应。
上述两个思路,你选择吧。代码没有功夫写。
你的那个思路技术上有些问题。