0

我有一个在 IE10 中运行良好的 ActiveX 项目。

发生了一种情况,需要我获取运行控件的选项卡的 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 是不可能的。

4

1 回答 1

1

我会这样做:

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

  • 使用GetParent遍历窗口的父链,直到找到一个带有 Win32 类名的窗口TabWindowClassGetClassName可用于获取类的名称)。

  • 那将是所需 IE 选项卡的 HWND。

于 2013-08-15T14:52:37.630 回答