避免来自其他软件的所有系统消息和消息

时间:2011-11-04 13:03:23

标签: c windows

情况如下。我工作的公司在c中构建这个软件,可以使Windows计算机有点像电视。从本质上讲,我们的软件是全屏播放的,内容是从互联网上显示的,用户不必再次触摸电脑。

问题在于,系统偶尔会出现“您的Windows系统已准备好升级”等弹出窗口。或者“请更新您的诺顿订阅”等,用户必须定期并手动删除。

有没有办法在不受这些警告困扰的情况下全屏显示内容?

5 个答案:

答案 0 :(得分:13)

是的,无论开发社区是否同意,微软都有几个标准可以接受独家使用显示器的时间和原因。

最官方的策略是在独占模式下使用DirectX。这就是游戏的作用,Windows媒体播放器在启用硬件加速的全屏视频中的作用等等...... 如果您的应用程序是多媒体密集型的(如电视功能所建议的那样),应该也应该使用DirectX 。除了为您提供独家显示访问外,它还可以提高您的应用程序性能,同时降低CPU负载(因为它会在可能的情况下将图形工作过载到视频卡上)。

如果DirectX不是一个选项,那么可用的大量黑客似乎在不同代的Windows操作系统之间表现不同。因此,您可能必须准备好实施几种技术来涵盖您计划支持的每个操作系统。

一种技巧是将您的应用程序设置为当前运行的屏幕保护程序。屏幕保护程序如果真的只是一个EXE重命名为SCR,它应该支持某些命令行开关。但是您可以将自己的应用程序编写为屏幕保护程序和一个小启动程序存根,将其设置为屏幕保护程序并启动它。退出时,应用程序应返回原始屏幕保护程序设置(可能启动程序等待进程退出,以便它返回优雅出口和任何计划外进程终止的设置,即:应用程序崩溃)。我不确定这种行为在各个平台上是否一致,但您必须对其进行测试。

防止其他应用程序创建窗口句柄在我看来真的是一个黑客,而且我不喜欢作为此类软件的客户。

让你保持在最前面的BringWindowToTop()调用更好(它不会打破其他软件)但仍然有点黑客攻击。

答案 1 :(得分:7)

使用全局钩子捕获窗口创建消息。这样,您可以在不需要的窗口可见之前关闭或隐藏它们。

编辑:如果您确实想要避免挂钩,那么您可以定期调用一个函数,这会将您的窗口置于z-stack的顶部。

答案 2 :(得分:4)

您可以停用系统更新http://support.microsoft.com/kb/901037并删除诺顿恶意软件。

您还可以连接第二个屏幕,以便气泡出现在第一个显示器中。

或者你为linux或windows ce重写它。

最后一个选项是安装将您的操作系统重新配置到自助服务终端的软件http://shop.inteset.com/Products/9-securelockdown.aspx

答案 3 :(得分:3)

如果您不需要输入键盘或鼠标,那么如何以screensaver的身份运行应用程序呢?

答案 4 :(得分:3)

Windows资源管理器会触发或管理大量消息。 只需用你的虚拟c#/ winform替换它。 通过更改注册表值

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"Shell"="Explorer.exe"

您可以指定几乎任何exe作为explorer.exe的替代品 这就是所有基于Windows(嵌入式)系统(ATM& co)的方式。 仍然很少调整(禁用您不需要的服务/ Dr watson& others),当然,您还需要保留“restart explorer.exe”后门。 但这是一个好的开始