SHdovw与internetexplor

本文介绍了一种通过编程方式获取正在使用的Internet Explorer浏览器当前网址的方法。主要分为两个步骤:一是遍历所有IE实例并筛选出活动窗口;二是利用Windows API确定哪个IE窗口处于前台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1. 問題描述

如何取得正在使用的 Interner Explorer 網址

 

2. 方法

(1) 取得 Internet Explorer 網址

先加入參考 Microsoft HTML Object Library 與 Microsoft Internet Controls

接著請參考以下程式碼與註解

01this.lbURL.Items.Clear();
02// 取得目前 Shell 的所有視窗
03SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
04foreach (SHDocVw.InternetExplorer ie in shellWindows)
05{
06    // 判斷視窗是否為 iexplore
07    if (Path.GetFileNameWithoutExtension(ie.FullName).ToLower().Equals("iexplore"))
08    {
09        this.lbURL.Items.Add(ie.LocationURL);
10    }
11}

 

image

 

(2) 透過 Windows API GetForegroundWindow 取得正在使用視窗[前景]的控制代碼

將宣告 GetForegroundWindow 部分加入,並且在取得 Internet Explorer 視窗時,判斷是否為正在使用前景視窗

01// 
02 // Windows API : GetForegroundWindow
03 // 取得正在使用視窗[前景]的控制代碼
04 // 
05 [DllImport("user32.dll")]
06 private static extern IntPtr GetForegroundWindow();
07 private void timer1_Tick(object sender, EventArgs e)
08 {
09     this.lbURL.Items.Clear();
10     // 取得目前 Shell 的所有視窗
11     SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
12     foreach (SHDocVw.InternetExplorer ie in shellWindows)
13     {
14         // 判斷視窗是否為 iexplore
15         if (Path.GetFileNameWithoutExtension(ie.FullName).ToLower().Equals("iexplore"))
16         {
17             // 判斷此 Internet Explorer 是否為正在使用視窗[前景]
18             if (ie.HWND == GetForegroundWindow().ToInt32())
19             {
20                 this.txtURL.Text = ie.LocationURL;
21             }
22             this.lbURL.Items.Add(ie.LocationURL);
23         }
24     }
25 }

 

image

出处:http://www.dotblogs.com.tw/chou/archive/2010/01/11/12953.aspx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值