如果只是控制IE的地址的话用GETEINDOWTEXT就行了,其他的就很难了,你可看看护花的作者写的屏幕取字的文章!

解决方案 »

  1.   

    在before_navigate中检查,合格的通行,不合格的禁止。
      

  2.   

    to:vbFly(CSDN是垃圾) 
    用getwindowtext的功能也不是很好啊。要是窗体的标题没有我要禁止的,
    那不是没用了?
    护花的作者写的那篇文章,那边有的找呢?to lou_df(ldf) 
    你能不能说详细点呢?
    我看得很不明白啊。。
    谢谢你们了。
      

  3.   

    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Public 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
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As String) As Long
    Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    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
    Public Const WM_GETTEXT = &HD
    Public Const WM_GETTEXTLENGTH = &HE
    Public Const WM_CLOSE = &H10Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As LongPublic Const WM_SETTEXT = &HCPublic Function GetText(ByVal hNow As Long) As String
    On Error Resume Next
    Dim bArr() As Byte, bArr2() As Byte
    hLength = SendMessage(hNow, WM_GETTEXTLENGTH, 0, 0)
    If hLength > 0 Then
    ReDim bArr(hLength + 1) As Byte, bArr2(hLength - 1) As Byte
    Call CopyMemory(bArr(0), hLength, 2)
    Call SendMessage(hNow, WM_GETTEXT, hLength + 1, bArr(0))
    Call CopyMemory(bArr2(0), bArr(0), hLength)
    GetText = StrConv(bArr2, vbUnicode)
    Else
    GetText = ""
    End If
    End Function'-----------------
    sClassName = ("IEFrame")
    lhwnd = FindWindowEx(0, 0, sClassName, vbNullString)
    wwe=lhwnd
    If lhwnd = 0 Then
    sClassName = ("Afx")
    lhwnd = FindWindowEx(0, 0, sClassName, vbNullString)
    sClassName = ("WorkerA")
    lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString)
    sClassName = ("ReBarWindow32")
    lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString)
    sClassName = ("ComboBox")
    lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString)
    EnableWindow lhwnd, False
    sClassName = ("Edit")
    lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString)
    WindowHandle = lhwnd
    buffer = GetText(WindowHandle)
    If buffer = "" Then Exit Sub
    for i=0 to List1.Listconst '假设被限制的网址在List1中
    If buffer=list1.list(i) Then
    ttt = "该资源禁止访问!"
    SendMessageByString WindowHandle, WM_SETTEXT, -1, ByVal ttt
    MessageBox wwe, ttt, ttt, vbOKOnly + vbInformation
    PostMessage wwe,WM_CLOSE ,0,0End if
      

  4.   

    上面的
    '-----------------
    sClassName = ("IEFrame")
    lhwnd = FindWindowEx(0, 0, sClassName, vbNullString)
    wwe=lhwnd
    If lhwnd = 0 Then
    的 If lhwnd = 0 Then  一行不要Windows Me/98的工作区为Classid=WorkerA;Windows2000的是WorkerW
      

  5.   

    这里有Delphi的文章:
    http://www.csdn.net/develop/read_article.asp?id=6351
    利用IE扩展实现的IE控制,护花使者使用的基本上就是这种功能。
      

  6.   

    to wjq(b_wind
    谢谢。我现在正在看
    to jlum99(闲人) (,,,,
    你是不是有更好的方法啊?
      

  7.   

    to wjq(b_wind) (
    你用的方法是不是结合类名通过查找窗体的标题,
    对应呢?
    如果该窗体的标题是被禁止的网站的字符串,就不允许,
    是这样吗?
    那要是那个网站不是使用这些字符串呢?
    能不能通过url和ip来禁止呢?
      

  8.   

    我的方法就是通过读取地址栏里的url判断网站。
      

  9.   

    是吗?那你就看看TechnoFantasy的对IE的完全控制,几 行代码不用API,搞定之!
      

  10.   

    to wjq(b_wind)
    怎么获取地址栏的url?
      

  11.   

    是用Findwindowex函数取得地址栏的句柄,然后通过SendMessage取得地址栏的文字(url)进行判断。
      

  12.   

    问题到底是什么?
    http://www.taihe.com
      

  13.   

    to wjq(b_wind)
    如果是想取得地址栏的句柄,那不是要针对特定的浏览器了吗?
    那样适用范围不是 很小吗?
    怎么才能做得更通用一些的!!!!!!???
      

  14.   

    thank aikill(纵横四海) bengchang