簡體   English   中英

C#-獲取Internet Explorer選項卡的索引

[英]C# - Get index of Internet Explorer tabs

我正在搜索並試圖整天解決這個問題,所以我認為是時候問了。

在我的C#代碼中,我試圖獲取與瀏覽器中顯示的順序相同的IE標簽頁。

重要說明:我無法使用URL或Title來完成此操作,因為瀏覽器可以包含兩個打開了相同頁面的標簽。

為此,我嘗試了不同的方法:

  • 我使用了Interop.SHDocVw庫,在該庫中試圖獲取所有IE窗口並獲取其標簽頁。 這種方法效果很好,但是選項卡按創建日期排序。 因此,如果我在IE中打開4個標簽頁,它會返回正確的順序,但是當我將一個標簽頁移到第一個位置時,該方法仍然顯示為第4個標簽頁。

      List<int> hwnds = new List<int>(); ShellWindows shellWindows = new ShellWindows(); var explorer = shellWindows.Cast<InternetExplorer>() .ToList() .Where(item => item.Document is IHTMLDocument2); foreach (var internetExplorer in explorer) { hwnds.Add((internetExplorer.Document as IOleWindow).GetWindow()); } return windows; 
  • 另一種方法是實現Win32 Windows搜索,在該窗口中按類名過濾Windows。 這將返回命令,就像在Spy ++軟件中一樣。 從我的角度看,它似乎是按上一次交互排序的。 第一個是與我互動的標簽,例如最后一個,第二個-上一個,等等。
  • 我嘗試過的另一件事是實現IEAccessible獲取標簽的方式,但這對我根本不起作用。 https://social.msdn.microsoft.com/Forums/ie/en-US/03a8c835-e9e4-405b-8345-6c3d36bc8941/ie7-ie8-tab-interaction-accessibility-class?forum=ieextensiondevelopment

  • 我嘗試的最后一件事是使用UI自動化,但是使用WinSDK Inspect工具,我只能看到當前打開的選項卡的hwnd是可見的。 否則,我只能看到帶有標題的按鈕,而沒有hwnds。

如果有人可以幫助我解決這個問題,我將非常感謝-因為我看不到任何其他解決方案。

您應該能夠通過UI自動化以正確的順序獲取選項卡。 運行Inspect.exe工具,我可以在許多窗格控件下正確看到它們: IE中已打開的標簽頁列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM