0

语境:

我正在 C# 中使用 VS2010 .NET 4.0 在 Windows 8.1 上开发屏幕保护程序。它非常“忙”,在初始加载时访问数据库并在显示到多显示器之前进行一些图像处理。

问题:

在大多数情况下,进程会干净地关闭 a) 在 /s 模式下移动鼠标/键盘或在 /p 模式下关闭desk.cpl 时。当我在 /p 模式下运行(desk.cpl 打开)然后我启动“设置”(/c 模式)或“预览”(/s 模式)时,会出现一个问题。一旦这些新进程关闭,/p 模式将按预期返回,但是当desk.cpl 关闭时,/p 模式进程将继续运行。 然而,这是间歇性的——有时它会关闭,有时它不会。

在 /p 模式下,我明确不会在鼠标移动等时关闭表单,因为这不适合desk.cpl 预览窗口。因此,我的假设是desk.cpl 会杀死我的进程,但这似乎并没有持续发生。

问题:

如何确保 /p 模式将持续关闭?

4

1 回答 1

0

两种方法。您可以监视 WM_DESTROY 的消息泵并关闭它,或者您可以设置一个计时器和监视器以查看您是否还有可见窗口。请注意,当控制面板取代您(自行关闭,或用户选择新的屏幕保护程序)时,您的窗口将被隐藏,并且我相信已被破坏。由于您是屏幕保护程序,因此提前中止的风险似乎比永远挂着要小。

所以设置一个非表单定时器(如果你的窗口被破坏,表单定时器可能会被破坏),并定期检查自己。正如有人在对您的问题的评论中指出的那样,您还可以监视 GetParent 以查看它是否发生变化。

于 2014-08-25T04:33:36.930 回答