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是不可能的。
我会这样做:
-
获取控件窗口的Win32 HWND:
IntPtr hWnd = this.Handle.ToPointer();
-
使用GetParent向上遍历窗口的父链,直到找到Win32类名为
TabWindowClass
的窗口(GetClassName可用于获取类的名称)。 -
这将是想要的IE标签的HWND。