'需一个command1,一个text1
Option ExplicitPrivate 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 SendMessageBynum Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd 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 LongPrivate Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As LongPrivate Sub Command1_Click()
Dim Index As Long
Dim IEhwnd As LongText1.Text = ""
Do
Index = Index + 1
IEhwnd = FindWindowEx(0, IEhwnd, "IEFrame", vbNullString)
If IEhwnd = 0 Then
Exit Do
Else
Text1.Text = Text1.Text & Index & "." & vbCrLf
Text1.Text = Text1.Text & "标题 : " & GetWindowCaption(IEhwnd) & vbCrLf
Text1.Text = Text1.Text & "URL : " & GetIEUrl(IEhwnd) & vbCrLf & vbCrLf
End If
LoopIf Index > 1 Then
Text1.Text = Text1.Text & "共" & Index - 1 & "个窗口"
Else
Text1.Text = "没有任何IE窗口!"End If
Text1.SelStart = Len(Text1.Text)End SubPrivate Function GetIEUrl(ByVal hwnd As Long) As String
Dim Index As Long
Dim ClassName As String
Dim TextLength As Long
Const WM_GETTEXT As Long = &HD
Const WM_GETTEXTLENGTH As Long = &HEConst WM_SETTEXT = &HC
Const WM_KEYDOWN = &H100For Index = 1 To 5
ClassName = Switch(Index = 1, "WorkerA", Index = 2, "ReBarWindow32", Index = 3, "ComboBoxEx32", Index = 4, "ComboBox", Index = 5, "Edit")
hwnd = FindWindowEx(hwnd, 0, ClassName, vbNullString)
NextTextLength = SendMessageBynum(hwnd, WM_GETTEXTLENGTH, 0, 0)
GetIEUrl = String(TextLength, 0)
SendMessageByString hwnd, WM_GETTEXT, TextLength + 1, GetIEUrl'SendMessageByString hwnd, WM_SETTEXT, 0, "I love you!"
'SendMessageByString hwnd, WM_KEYDOWN, vbKeyReturn, "I love you!"End FunctionPrivate Function GetWindowCaption(hwnd As Long) As String
Dim TextLength As LongTextLength = GetWindowTextLength(hwnd)
GetWindowCaption = String(TextLength, 0)
GetWindowText hwnd, GetWindowCaption, TextLength + 1'SetWindowText hwnd, "KILL!!!"End Function
以上供你参考,IE各版本类名好像不同,你自己去获取!
Option ExplicitPrivate 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 SendMessageBynum Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd 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 LongPrivate Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As LongPrivate Sub Command1_Click()
Dim Index As Long
Dim IEhwnd As LongText1.Text = ""
Do
Index = Index + 1
IEhwnd = FindWindowEx(0, IEhwnd, "IEFrame", vbNullString)
If IEhwnd = 0 Then
Exit Do
Else
Text1.Text = Text1.Text & Index & "." & vbCrLf
Text1.Text = Text1.Text & "标题 : " & GetWindowCaption(IEhwnd) & vbCrLf
Text1.Text = Text1.Text & "URL : " & GetIEUrl(IEhwnd) & vbCrLf & vbCrLf
End If
LoopIf Index > 1 Then
Text1.Text = Text1.Text & "共" & Index - 1 & "个窗口"
Else
Text1.Text = "没有任何IE窗口!"End If
Text1.SelStart = Len(Text1.Text)End SubPrivate Function GetIEUrl(ByVal hwnd As Long) As String
Dim Index As Long
Dim ClassName As String
Dim TextLength As Long
Const WM_GETTEXT As Long = &HD
Const WM_GETTEXTLENGTH As Long = &HEConst WM_SETTEXT = &HC
Const WM_KEYDOWN = &H100For Index = 1 To 5
ClassName = Switch(Index = 1, "WorkerA", Index = 2, "ReBarWindow32", Index = 3, "ComboBoxEx32", Index = 4, "ComboBox", Index = 5, "Edit")
hwnd = FindWindowEx(hwnd, 0, ClassName, vbNullString)
NextTextLength = SendMessageBynum(hwnd, WM_GETTEXTLENGTH, 0, 0)
GetIEUrl = String(TextLength, 0)
SendMessageByString hwnd, WM_GETTEXT, TextLength + 1, GetIEUrl'SendMessageByString hwnd, WM_SETTEXT, 0, "I love you!"
'SendMessageByString hwnd, WM_KEYDOWN, vbKeyReturn, "I love you!"End FunctionPrivate Function GetWindowCaption(hwnd As Long) As String
Dim TextLength As LongTextLength = GetWindowTextLength(hwnd)
GetWindowCaption = String(TextLength, 0)
GetWindowText hwnd, GetWindowCaption, TextLength + 1'SetWindowText hwnd, "KILL!!!"End Function
以上供你参考,IE各版本类名好像不同,你自己去获取!
http://lihuasoft.go163.net
一旦出现IE的窗口,就获取HWND,然后枚举子窗口COMBBOX,然后获取其文字,
然后和自己的反黄网址库进行对比,如果成立就强行关闭IE或者指挥IE到自己指定的网址。
哎,这个方法已经在3年前就已经有人使用了。
这种技术已经过时了,使用VXD吧。这才是百催不垮的好办法。
你看完的的给的那个程序再说
lihuasoft.go163.net