确定打开窗口的顺序

Posted

技术标签:

【中文标题】确定打开窗口的顺序【英文标题】:Determining order of windows opened 【发布时间】:2011-05-19 22:15:08 【问题描述】:

通过 windows API,我可以获得当前打开的所有窗口的列表,但似乎 IntPtr 没有按任何特定顺序返回。我想知道是否有办法让窗户按打开的顺序排列。例如,如果我打开 2 个 IE 窗口,然后打开一个记事本窗口,当我检索窗口列表时,我希望 2 个 IE 窗口位于记事本窗口之前。我在 C# 中这样做。

【问题讨论】:

您使用什么 API 调用来返回 Windows 列表? 如果您的应用程序在窗口打开时正在运行,那么您可以安装一个挂钩,在打开窗口时调用它并自己跟踪。 好奇你为什么想知道? 好吧,我正在编写一些测试软件,我们需要能够断言前台窗口,但有人要求我们检查,因为如果多个窗口以相同的名称打开,他们想要断言第二个窗口打开的是当前焦点窗口。 【参考方案1】:

句柄值是混淆的指针,你根本不能依赖它们的值。他们得到回收。

远距离拍摄是GetWindowThreadProcessId()获取拥有该窗口的线程ID。 OpenThread() 来获取它的句柄。 GetThreadTimes() 找出该线程的创建时间。 CloseHandle() 进行清理。然而,结果只是一个猜测,请避免想问这样的问题。访问 pinvoke.net 以获取声明。

【讨论】:

有趣的是,这适用于除 FireFox 之外的几乎所有应用程序,似乎所有的 firefox 窗口都是从同一个线程产生的(但我为此写了一个解决方法)

以上是关于确定打开窗口的顺序的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的电脑按ctrl+shift不能切换输入法

打开React Modal改变MDBDataTable的排序顺序

windows 如何设置自动启动服务顺序

Selenium-测试对象操作之:多窗口内嵌frame

如何访问win10 nfs服务器

CMD是啥``在哪里打开```