首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从SysTray恢复应用程序?由于Handle=0,ShowWindow帮不上忙

如何从SysTray恢复应用程序?由于Handle=0,ShowWindow帮不上忙
EN

Stack Overflow用户
提问于 2010-01-07 03:46:12
回答 3查看 395关注 0票数 0

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

在最小化到TaskBar的应用程序上调用ShowWindow是可以的,但是在最小化到SysTray的应用程序中,它的句柄似乎被设置为零,当然ShowWindow找不到它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-07 18:39:44

来自Adam Robinson和nobugz的有用建议。帮助我认识到我们正在尝试的事情甚至可能是不可能的。这在很大程度上取决于应用程序在隐藏自身时在内部的表现,而我们并不能控制这一点,甚至对此也知之甚少。我们需要从另一个方向来处理这个问题。

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

票数 0
EN

Stack Overflow用户

发布于 2010-01-07 03:49:18

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

如果您有关于特定应用程序如何运行的信息,并且您希望将其作为特定情况来处理,那么这可能是可能的。但不幸的是,不存在万能的解决方案。

编辑

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

票数 2
EN

Stack Overflow用户

发布于 2010-01-07 03:52:05

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

它通过一个私有的回调函数得到托盘图标通知,你不能自己伪造它。伪造鼠标点击是非常困难的,因为你找不到图标所在的位置。我想你被卡住了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2015689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档