代码之家  ›  专栏  ›  技术社区  ›  Jader Dias

如何将另一个应用程序的窗口句柄最小化到系统托盘?

  •  2
  • Jader Dias  · 技术社区  · 14 年前

    实例A正在尝试还原实例B的窗口,但我无法获取实例B的窗口句柄。我认为问题在于,系统托盘的窗口被B最小化,使用:

    this.Visibility = Visibility.Hidden;
    

    A试图通过以下方式获取B的窗口句柄:

    Process process = Process.GetCurrentProcess();
    Process.GetProcessesByName(process.ProcessName).First().MainWindowHandle;
    

    等于 IntPtr.Zero .

    我还尝试使用Spy++按类名获取窗口句柄,但类名具有以下格式的每个实例GUID:

    HwndWrapper[FileName.exe;;ad445199-cf93-48a4-bd24-2f97d54c8af8]
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   Remus Rusanu    14 年前

    MainWindowHandle There can be more than one (or zero): Converting a process to a window :

    “对应的窗口?”

    函数以获取 线程。

    “是的,我知道窗户的事, 但是我怎么才能得到我想要的窗户呢 “你想要什么?”

    好吧,你还没说你想要什么

    “线。”

    但是哪一个呢?你怎么决定 在所有的窗户里?

    想要。

    “我想要对应于 线。你为什么不回答我的问题 有什么问题吗?”

    注意说“我在找 顶层无主窗口”是一个 向前一步,但仍然没有 有多个顶级无主窗口 在一个过程中。例如,Explorer 通常有很多顶级的 无主窗户。这是桌面, 任务栏,打开的文件夹窗口, 和属性表。如果你要求 顶层无主窗口 探险家,你想要哪一个?

    为进程指定“the”窗口 对象有一个名为 主窗口句柄。文件 也可以消除这种想法。我有 不知道财产是怎么决定的 在多个顶级无主

    MSDN Q&A中也阐述了该主题 Get the Main Window

    A 你是说哪个主窗口?