因此,Windows屏幕保护程序只是一个传递3个参数之一的exe。
/c for config screen
/s for fullscreen
/p <hwnd> for the little preview window.
除了我有多个处理运行(这是问题)之外,我有一切都在运行桃子。
当您打开Windows屏幕保护程序选择器窗口并选择我的屏幕保护程序时,它会使用/ p启动它,以便它可以显示预览。如果单击设置按钮,它将使用/ c再次调用我的sreensaver。现在我有两个处理正在运行。当我关闭对话框时,我的进程结束,但是Windows现在再次使用/ p调用我的屏幕保护程序。这些过程不断加起来。
我该如何处理这个问题?我没有看到关于这个主题的任何文件。我希望以前有人这样做过。
我不想监视其他进程只保留一个进程。必须有一个我没有看到的解决方案。
经过进一步调查后,我发现Windows将消息传递给您的屏幕保护程序: http://msdn.microsoft.com/en-us/library/cc144066%28v=vs.85%29.aspx
我设置了一个过滤器来捕获消息。我得到的一切,但破坏。大声笑。我认为它会通过WM_DESTROY告诉你保释。
答案 0 :(得分:1)
原来我回答了自己的问题。请参阅上面的msdn链接。您必须监视消息,并且在WM_DESTROY上,您将终止您的进程。 - 刚刚编辑HCHogan
答案 1 :(得分:0)
为什么不查看参数以查看它是否在预览模式下运行,然后将代码更改为不执行任何您想要避免的操作,
或将HWND存储在注册表中,然后使用它来查看屏幕保护程序正常启动时预览是否仍在运行