C#ActiveX / IE 10 /多个选项卡/获取ActiveX MainWindowHandle

时间:2013-08-15 11:02:52

标签: c# activex

我在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的选项卡的句柄?

对于“Legacy”目的,我必须在.NET V2中执行此操作,因此WindowsInteroptHelper是不可能的。

1 个答案:

答案 0 :(得分:1)

我会这样做:

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

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

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