【问题标题】:Restore application from system tray从系统托盘恢复应用程序
【发布时间】:2010-10-06 06:15:38
【问题描述】:

以编程方式恢复系统托盘中运行的第三方应用程序(例如,GoogleTalk 或 Twhirl)并使其聚焦的最佳方法是什么?我正在用 C# 编写我的实用程序,但我显然无法控制第三方应用程序。

【问题讨论】:

    标签: c# winapi process


    【解决方案1】:

    使用 API 调用将鼠标点击事件发送到系统托盘? Google WM_SENDMSG SendMessage Win32 API 为起点

    还有另一个API call 用于在窗口备份后设置焦点。

    【讨论】:

      【解决方案2】:

      使用 FindWindow /FindWindowEx 之类的方法查找隐藏的窗口并获取其窗口句柄,然后调用 ShowWindow (handle, SW_NORMAL) 将其取消隐藏。

      使用 Spy++ 之类的工具(可在 Visual Studio 工具菜单中找到)查找可传递给 FindWindow 以定位所需窗口的参数。

      【讨论】:

      • 如果隐藏窗口的 Handle=0 怎么办?
      • AFAIK 一个 NULL 句柄代表一个无效的 HANDLE...FindWindow 在找不到指定窗口时返回 NULL。
      最近更新 更多