帮你把代码贴出来:Option ExplicitPrivate Type UUID Data1 As Long Data2 As Integer Data3 As Integer Data4(0 To 7) As Byte End TypePrivate Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" ( _ Destination As Any, _ ByVal Length As Long)Private Declare Function FindWindowA Lib "user32" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As Long) As LongPrivate Declare Function FindWindowExA Lib "user32" ( _ ByVal hWnd1 As Long, _ ByVal hWnd2 As Long, _ ByVal lpsz1 As String, _ ByVal lpsz2 As Long) As LongPrivate Declare Function ObjectFromLresult Lib "oleacc" ( _ ByVal lResult As Long, _ riid As UUID, _ ByVal wParam As Long, _ ppvObject As Any) As LongPrivate Declare Function RegisterWindowMessageA Lib "user32" ( _ ByVal lpString As String) As LongPrivate Declare Function SendMessageTimeoutA Lib "user32" ( _ ByVal hwnd As Long, _ ByVal Msg As Long, _ ByVal wParam As Long, _ lparam As Any, _ ByVal fuFlags As Long, _ ByVal uTimeout As Long, _ lpdwResult As Long) As LongPrivate Declare Function EnumWindows Lib "user32" ( _ ByVal lpEnumFunc As Long, _ lparam As Long) As BooleanPrivate Declare Function RealGetWindowClassA Lib "user32" ( _ ByVal hwnd As Long, _ ByVal psztype As String, _ ByVal cchtype As Long) As LongPrivate Declare Function ShellExecuteA Lib "shell32.dll" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As LongPrivate Declare Sub Sleep Lib "kernel32" ( _ ByVal dwMilliseconds As Long)'// FindWindow args Private Const arg As String = "ieframe" Private Const arg1 As String = "shell docobject view" Private Const arg2 As String = "Internet Explorer_Server"'// GetObject args Private Const WM_HTML_GETOBJECT As String = "WM_HTML_GETOBJECT"Private HTML As HTMLDocument Dim Handle As Long Dim IsIE As StringPublic Sub doLogin() IsIE = vbNullString IsIE = Space$(10) EnumWindows AddressOf Frames, 0 End SubPublic Sub GoWeb(ByVal address As String, Optional Timeout As Long) ShellExecuteA 0, "open", address, "", vbNullString, 1 Sleep Timeout End SubPublic Function Generate(ByVal hwnd As Long) As IHTMLDocument
Dim ID As UUID Dim lngReg As Long Dim lngHnD As Long
With ID .Data1 = &H626FC520 .Data2 = &HA41E .Data3 = &H11CF .Data4(0) = &HA7 .Data4(1) = &H31 .Data4(2) = &H0 .Data4(3) = &HA0 .Data4(4) = &HC9 .Data4(5) = &H8 .Data4(6) = &H26 .Data4(7) = &H37 End With
Call SendMessageTimeoutA(hwnd, lngHnD, 0, 0, &H2, 2000, lngReg) Call ZeroMemory(ID, Len(ID)) Call ObjectFromLresult(lngReg, ID, 0, Generate)End FunctionPrivate Sub SetObjData( _ var As Variant, _ var1 As Variant, _ btn As Variant, _ user As String, _ pass As String)
Set HTML = Generate(Handle) HTML.documentElement.All(var).Value = user HTML.documentElement.All(var1).Value = pass HTML.documentElement.All(btn).Click Set HTML = Nothing
End SubPublic Function Frames( _ ByVal hwnd As Long, _ ByVal lparam As Long) As Boolean
程序不是自己的.
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End TypePrivate Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" ( _
Destination As Any, _
ByVal Length As Long)Private Declare Function FindWindowA Lib "user32" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As Long) As LongPrivate Declare Function FindWindowExA Lib "user32" ( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As Long) As LongPrivate Declare Function ObjectFromLresult Lib "oleacc" ( _
ByVal lResult As Long, _
riid As UUID, _
ByVal wParam As Long, _
ppvObject As Any) As LongPrivate Declare Function RegisterWindowMessageA Lib "user32" ( _
ByVal lpString As String) As LongPrivate Declare Function SendMessageTimeoutA Lib "user32" ( _
ByVal hwnd As Long, _
ByVal Msg As Long, _
ByVal wParam As Long, _
lparam As Any, _
ByVal fuFlags As Long, _
ByVal uTimeout As Long, _
lpdwResult As Long) As LongPrivate Declare Function EnumWindows Lib "user32" ( _
ByVal lpEnumFunc As Long, _
lparam As Long) As BooleanPrivate Declare Function RealGetWindowClassA Lib "user32" ( _
ByVal hwnd As Long, _
ByVal psztype As String, _
ByVal cchtype As Long) As LongPrivate Declare Function ShellExecuteA Lib "shell32.dll" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As LongPrivate Declare Sub Sleep Lib "kernel32" ( _
ByVal dwMilliseconds As Long)'// FindWindow args
Private Const arg As String = "ieframe"
Private Const arg1 As String = "shell docobject view"
Private Const arg2 As String = "Internet Explorer_Server"'// GetObject args
Private Const WM_HTML_GETOBJECT As String = "WM_HTML_GETOBJECT"Private HTML As HTMLDocument
Dim Handle As Long
Dim IsIE As StringPublic Sub doLogin()
IsIE = vbNullString
IsIE = Space$(10)
EnumWindows AddressOf Frames, 0
End SubPublic Sub GoWeb(ByVal address As String, Optional Timeout As Long)
ShellExecuteA 0, "open", address, "", vbNullString, 1
Sleep Timeout
End SubPublic Function Generate(ByVal hwnd As Long) As IHTMLDocument
Dim ID As UUID
Dim lngReg As Long
Dim lngHnD As Long
lngHnD = RegisterWindowMessageA(WM_HTML_GETOBJECT)
With ID
.Data1 = &H626FC520
.Data2 = &HA41E
.Data3 = &H11CF
.Data4(0) = &HA7
.Data4(1) = &H31
.Data4(2) = &H0
.Data4(3) = &HA0
.Data4(4) = &HC9
.Data4(5) = &H8
.Data4(6) = &H26
.Data4(7) = &H37
End With
Call SendMessageTimeoutA(hwnd, lngHnD, 0, 0, &H2, 2000, lngReg)
Call ZeroMemory(ID, Len(ID))
Call ObjectFromLresult(lngReg, ID, 0, Generate)End FunctionPrivate Sub SetObjData( _
var As Variant, _
var1 As Variant, _
btn As Variant, _
user As String, _
pass As String)
Set HTML = Generate(Handle)
HTML.documentElement.All(var).Value = user
HTML.documentElement.All(var1).Value = pass
HTML.documentElement.All(btn).Click
Set HTML = Nothing
End SubPublic Function Frames( _
ByVal hwnd As Long, _
ByVal lparam As Long) As Boolean
On Error Resume Next
Call RealGetWindowClassA(hwnd, ByVal IsIE, Len(IsIE))
If InStr(1, IsIE, arg, vbTextCompare) > 0 Then
Handle = FindWindowExA(hwnd, 0, arg1, 0)
Handle = FindWindowExA(Handle, 0, arg2, 0)
'TODO:
'edit to your specifications(username and pass) etc.
SetObjData "email", "passwd", "null", "myusername", "mypassword"
End If
Frames = True
End Function
Set xDoc = Generate(hwnd)其中hwnd是窗口句柄。
只能打开gmail窗口 登陆不了.......
谢谢各位了!