1

因此,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 告诉你保释。

4

2 回答 2

1

原来我回答了我自己的问题。请参阅上面的 msdn 链接。您必须监视消息并在​​ WM_DESTROY 上终止您的进程。– HCHogan 刚刚编辑

于 2012-08-30T19:39:16.880 回答
0

为什么不只查看参数以查看它是否在预览模式下运行,然后更改您的代码以不做任何您试图避免的事情,

或将 HWND 存储在注册表中,然后使用它来查看屏幕保护程序正常启动时预览是否仍在运行

于 2012-08-30T18:56:21.917 回答