如何从SysTray恢复应用程序?由于Handle = 0,ShowWindow没有帮助

时间:2010-01-06 19:46:12

标签: .net systray showwindow

是否可以将已最小化的第三方应用程序还原到SysTray?

调用ShowWindow对于最小化到TaskBar的应用程序很好,但是应用程序已经最小化到SysTray,它的句柄显示为零,当然ShowWindow找不到它。

3 个答案:

答案 0 :(得分:2)

没有;可以采用不同的方法来完成此任务(应用程序可能会关闭窗口并在恢复时打开新副本,或者它可能只是隐藏原始窗口并在恢复时显示它)。为了实现这一功能,应用程序不需要遵循特定的过程,因此没有特定的过程可以遵循以反转它。

如果您有关于特定应用程序的行为方式的信息,并且您希望将其作为特定案例处理,那么这可能是可能的。但遗憾的是,一个一刀切的解决方案并不存在。

修改

您可以尝试使用Process Explorer来确定进程打开的窗口句柄(如果有)。这至少会告诉你它是在破坏还是隐藏窗口。

答案 1 :(得分:1)

完全取决于应用程序的实现。更常见的方法是从头开始创建一个新窗口,而不是显示一个隐藏的窗口。

它通过私人回调功能获取托盘图标通知,你不能自己伪造。伪造鼠标是很难做到的,因为你无法找到图标所在的位置。我觉得你被卡住了。

答案 2 :(得分:0)

Adam Robinson和nobugz的有用建议。帮助我看到我们正在尝试的东西甚至不可能。太多取决于应用程序在隐藏自身时的内部行为方式,我们无法控制或甚至不了解它。我们需要从另一个方向来解决这个问题。

该应用程序位于SysTray等待通过用户鼠标单击它激活,但我们无法自动执行此操作。但是还有另一种“激活”应用程序的方法,那就是再次运行exe文件。在这种情况下,它不会启动第二个实例,它只是重新激活现有实例。那么为什么不将Shell发送到exe文件并以这种方式重新激活应用程序呢?这就是我们所做的,它是一个有效的解决方案。