如何取得IE6.0当前打开的网页链接地址?

解决方案 »

  1.   

    Private Sub WebBrowser1_DownloadComplete()
    text1.Text = WebBrowser1.LocationURL
    End Sub
      

  2.   

    错了,这个只能打开webbrowser的
      

  3.   

    '一个捕获指定ie窗口的例子,改改就可以满足楼主的需求:
    Option Explicit
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    ’Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    ’Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Private Const WM_SETTEXT = &HC
    Private Const WM_KEYDOWN = &H100
    Private Const VK_RETURN = &HDPrivate Sub Command1_Click()
        Dim hWindow As Long
        Dim hWindowEx As Long    hWindow = FindWindow(vbNullString, "CSDN.NET - 中国最大的开发者网络,为开发人员和相关企业提供全面的信息服务和技术服务 - Microsoft Internet Explorer")
        If hWindow Then
            hWindowEx = FindWindowEx(hWindow, ByVal 0&, vbNullString, vbNullString)
            
            hWindowEx = FindWindowEx(hWindowEx, 0&, "ReBarWindow32", vbNullString)
            hWindowEx = FindWindowEx(hWindowEx, 0&, "ComboBoxEx32", vbNullString)
            hWindowEx = FindWindowEx(hWindowEx, 0&, "ComboBox", vbNullString)
            hWindowEx = FindWindowEx(hWindowEx, 0&, "Edit", vbNullString)
            
            '下一行改为读取即可
            SendMessage hWindowEx, WM_SETTEXT, 0, ByVal "www.baidu.com.cn"
            PostMessage hWindowEx, WM_KEYDOWN, VK_RETURN, 0
        End If
    End Sub
      

  4.   

    在这一行:
    hWindowEx = FindWindowEx(hWindowEx, 0&, "Edit", vbNullString)
    实际上已经取得了ie地址栏的句柄,下面给你一个根据句柄获取里面内容的函数:
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Sub RtlMoveMemory Lib "KERNEL32" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
    Private Const WM_GETTEXTLENGTH = &HE
    Private Const WM_GETTEXT = &HDFunction GetText(ByVal hWndNow As Long) As String
        Dim hLength As Long
        
        hLength = SendMessage(hWndNow, WM_GETTEXTLENGTH, 0, 0)
        If hLength > 0 Then
            ReDim bArr(hLength + 1) As Byte, bArr2(hLength - 1) As Byte
            Call RtlMoveMemory(bArr(0), hLength, 2)
            Call SendMessage(hWndNow, WM_GETTEXT, hLength + 1, bArr(0))
            Call RtlMoveMemory(bArr2(0), bArr(0), hLength)
            GetText = StrConv(bArr2, vbUnicode)
        Else
            GetText = ""
        End If
    End Function
      

  5.   

    先谢谢 kissoflife!
     你的方法非常好!
     
     我在调试过程序中出现未定义函数:findwindows
    (即:hWindow = FindWindow(vbNullString, "CSDN.NET - 中国最大的开发者网络,为开发人员和相关企业提供全面的信息服务和技术服务 - Microsoft Internet Explorer")) 请问这个函数是系统函数还是自定义函数呢?
      

  6.   

    这就是声明了呀:
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    是不是这上面的声明你放到模块里面去了?那就应该改成Public了
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
      

  7.   

    'Dim dWinFolder As ShellLinkObject
    Dim dWinFolder As ShellWindows
    'Dim ds As SHDocVw.InternetExplorerPrivate Sub Command1_Click()
        List1.Clear
        For i = o To dWinFolder.Count - 1
    '        Debug.Print dWinFolder.Item(i).Type
            'dWinFolder.Item(i).AddressBar = False
            List1.AddItem dWinFolder.Item(i).LocationURL
        Next i
    End SubPrivate Sub Form_Load()
        Set dWinFolder = New ShellWindows
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        Set dWinFolder = Nothing
    End Sub上述程序可以列出打开的IE所有的网址
     
     如何修改才能使其只列出当前IE的地址呢!
      

  8.   

    http://www.3lsoft.net/download/info/507.htm