gpt4 book ai didi

c# - 为什么 Process.MainWindowTitle 对于除一个窗口以外的所有窗口始终为空?

转载 作者:可可西里 更新时间:2023-11-01 14:13:56 26 4
gpt4 key购买 nike

当访问 Process.MainWindowTitle 如下...

Process[] processes = Process.GetProcessesByName( "iexplore" );

...然后遍历生成的数组,我总是以 MainWindowTitle 为空,数组中只有一项除外。在我的例子中,我打开了两个 Internet Explorer 窗口,一个有一个选项卡,一个有两个选项卡。

运行我的代码时,我总是得到我最后激活的窗口和选项卡的 MainWindowTitle - 所有其他的都保持为空。奇怪的是,填充 MainWindowTitle 的进程 ID 始终相同 - 如果我在运行代码之前激活其他 IE 窗口或选项卡,进程 ID 始终相同:

  if ( !processes.Any() )
{
MessageBox.Show( "TODO - No matching process found" );
return;
}

if ( processes.Count() > 1 )
{
foreach ( Process currentProcess in processes )
{
// More than one matching process found
checkedListBox1.Items.Add( currentProcess.Id + " - " + currentProcess.MainWindowTitle + " - " + currentProcess.ProcessName );
}

return;
}

因此第一次运行的输出可能是这样的:

  • 4824 - - iexplore
  • 3208 - - iexplore
  • 4864 - Google - Windows Internet Explorer - iexplore

下次运行(预先选择另一个 IE 窗口):

  • 4824 - - iexplore
  • 3208 - - iexplore
  • 4864 - id 软件 - Windows Internet Explorer - iexplore

我读过 this post ,但我没有进一步解决我的问题(而且它似乎朝着一个不同的方向发展)。

为什么我总是只能得到一个非空的 MainWindowTitle?

最佳答案

请记住,Internet Explorer 使用托管模型 - 一个 iexplore.exe 实例托管 Internet Explorer 框架,其他 iexplore.exe 实例仅显示选项卡的内容。

唯一具有顶层窗口的 IE 实例是承载框架的 iexplore.exe 进程。

This文章讨论了各种网络浏览器的多进程架构。据我了解,浏览器正在转向多进程模型——这样一个网页的故障不会影响其他页面。 This文章更详细地介绍了 IE 的多进程模型。

关于c# - 为什么 Process.MainWindowTitle 对于除一个窗口以外的所有窗口始终为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10063847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com