C#ActiveX/IE 10/多个选项卡/Get-ActiveX MainWindowHandle

本文关键字:Get-ActiveX MainWindowHandle 选项 IE C#ActiveX | 更新日期: 2023-09-27 18:27:52

我有一个ActiveX项目在IE10中运行得很愉快。

出现了一种情况,要求我获取控件正在运行的选项卡的MainWindowHandle。

以下代码返回IE的MainWindowHandle,而不是ActiveX控件运行的选项卡:

 Process.GetCurrentProcess().MainWindowHandle

如果我运行这个代码,它会根据打开的选项卡数量返回多个句柄:

 Process[] IEPROCS = Process.GetProcessesByName("iexplore");
 foreach(Process Proc in IEPROCS) {
     //output code
     Proc.MainWindowHandle.ToString();
 }

那么,我该如何确定ActiveX正在运行的选项卡的句柄呢?

出于"遗留"的目的,我必须在.NET V2中执行此操作,因此WindowsInteroptHelper是不可能的。

C#ActiveX/IE 10/多个选项卡/Get-ActiveX MainWindowHandle

我会这样做:

  • 获取控件窗口的Win32 HWND:IntPtr hWnd = this.Handle.ToPointer();

  • 使用GetParent向上遍历窗口的父链,直到找到Win32类名为TabWindowClass的窗口(GetClassName可用于获取类的名称)。

  • 这将是想要的IE标签的HWND。