我尝试过解决这个问题,但唯一的解决办法是创建一个对用户可见的窗口(即使让它仍然在Alt-Tab切换器中显示为0x0)。
当我的意思是隐藏时,我希望隐藏在Alt-Tab,Win-Tab,Ctrl-Tab,任务栏和任务管理器的“应用”部分。
任何解决方法?我只需要从任务管理器中检测到意外停止,但我需要一个窗口来接收来自SetWinEventHook()
的事件。
答案 0 :(得分:0)
有点像捕获22。您需要一个窗口来接收WinEvents。你可以为它创建一个message-only window,这对系统是隐藏的。
但是,从系统中隐藏窗口也意味着将其隐藏在任务管理器中。如果任务管理器没有看到可见窗口(没有在" Apps"中显示它),它将不会尝试优雅地关闭窗口,它只会过时地终止该过程,并且发生这种情况时,没有信号发送到进程。
为了得到一个优雅的关闭,你不能隐藏系统中的窗口,但是你必须接受随之而来的其他副作用。
在这种情况下,我能想到的唯一选择是创建一个监视主进程的独立进程。如果主进程意外消失,则观察程序进程可以做出相应的反应。你可以让观察者成为一种服务,这样非管理员用户就无法在任务管理器中杀死它。