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

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

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

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

this.Visibility = Visibility.HIDden;

而A正试图让B的窗口句柄使用:

Process process = Process.GetCurrentProcess(); Process.GetProcessesByname(process.Processname).First().MainWindowHandle;

这等于IntPtr.Zero 。

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

在繁忙的环境中可靠的文件保存(file.Replace)

types“System.Idisposable”在未引用的程序集中定义

控制windows 7的任务栏分组为我的应用程序

Visual Basic:重新启动桌面windowspipe理器(DWM)

编写.NET以外的windows客户端应用程序的最佳方法是什么?

HwnDWrapper[filename.exe;;ad445199-cf93-48a4-bd24-2f97d54c8af8]

windows服务不执行OnStart()

你如何在单声道做ALSA?

当从本机win32应用程序调用它时,如何deBUGgingC#COM程序集?

OmnisharpSever不在Atom上运行

linq to sql简要问题

那是因为你想要的东西基本上不存在,而MainWindowHandle的概念是一个严重误用,误入了.Net框架的永久混淆。 从中可以有多个(或零个):将进程转换为窗口 :

“我有一个线程ID,我如何获得相应的窗口?”

您可以使用EnumThreadwindows函数来获取线程上的所有窗口。

“是的,我知道EnumThreadwindows,但是如何获得我想要的窗口?”

那么,你还没有说你想要什么。

“我想要对应于该线程的窗口”。

但是哪一个? 你将如何决定在所有的窗口?

“那就是我问你的!

但是你还没有描述你想要什么。

“我想要窗口对应的线程,你为什么不回答我的问题?

请注意,“我正在寻找顶级无主窗口”是向前迈出的一步,但它并不能唯一标识一个窗口。 在一个进程中可以有多个顶级的无主窗口。 例如,资源管理器通常具有许多顶级无主窗口。 有桌面,任务栏,打开的文件夹窗口和属性表。 如果您要求“Explorer”的顶级无主窗口,您要哪一个?

也许人们认为有一种方法可以唯一地指定一个进程的“窗口”,因为System.Diagnostics.Process对象有一个名为MainWindowHandle的属性。 该财产的文件也没有做任何事情来消除这个概念。 我不知道如何在多个顶级无主窗口之间的财产决定。

这个话题也在MSDN中详细阐述Q&A 获取主窗口 :

Q如何找到一个流程的主窗口? 我正在写一个Spy-like的工具,我需要获得一个进程的主窗口(HWND),所以我可以发送一条消息,如WM_ACTIVATEAPP。

你指的是哪一个主窗口?

总结

以上是内存溢出为你收集整理的如何将另一个应用程序的窗口句柄最小化到系统托盘?全部内容,希望文章能够帮你解决如何将另一个应用程序的窗口句柄最小化到系统托盘?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1286560.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存