| 
 
UID97749注册时间2012-7-21最后登录2016-10-15在线时间125 小时好友2精华威望666 金钱4649 ¥体力73908  
 版主 坑坑坑坑   
 
	积分78089 
 | 
6#
 
 
 楼主|
发表于 2012-11-27 17:20:59
|
只看该作者 
| 代码: Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
 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 Long
 
 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
 ByVal lpClassName As String, _
 ByVal lpWindowName As String) As Long
 
 Private Declare Function SendMessage 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 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 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 GetDlgItem Lib "user32" ( _
 ByVal hDlg As Long, _
 ByVal nIDDlgItem As Long) As Long
 
 Private Declare Sub Sleep Lib "Kernel32" ( _
 ByVal dwMilliseconds As Long)
 
 Public Const KEY_ENTER = 13
 Public Const TEXT_STATE = "状态:"
 
 Private Const NUM_ERROR = 32
 Private Const SW_SHOWNORMAL = 1
 Private Const WM_SYSCOMMAND = &H112
 Private Const SC_MINIMIZE = &HF020&
 Private Const WM_SETTEXT = 12
 Private Const WM_LBUTTONDOWN = &H201
 Private Const WM_LBUTTONUP = &H202
 Private Const WM_CLOSE = &H10
 
 Dim mhandle As Long
 Dim chandle As Long
 
 Private Function OpenNetKeeper() As Boolean
 Dim sysdrive As String
 Dim path As String
 Dim state As Long
 Dim location As String
 sysdrive = Environ("SYSTEMDRIVE")
 path = sysdrive & "\ChinaNetSn\bin\Netkeeper.exe"
 location = sysdrive & "\ChinaNetSn\bin\"
 state = IIf(Dir(path) <> "", ShellExecute(vbNull, "open", path, vbNullString, location, SW_SHOWNORMAL), 0)
 If state < NUM_ERROR Then OpenNetKeeper = False: Exit Function
 Do
 mhandle = FindWindow("#32770_nkDialog_{6E1C7E0B-9380-4f69-A8D8-393F70589DE1}", vbNullString) '闪讯
 DoEvents
 Loop Until mhandle <> 0
 Call PostMessage(mhandle, WM_SYSCOMMAND, SC_MINIMIZE, vbNull)
 OpenNetKeeper = True
 End Function
 
 
 Private Function SendPassword() As Boolean
 Dim phandle As Long
 Dim password As String
 Sleep (100) '等待
 DoEvents
 chandle = FindWindowEx(mhandle, 0&, "#32770", vbNullString)
 phandle = GetDlgItem(chandle, &H412)
 password = Fmain.Tpass.Text
 If password = vbNullString Then SendPassword = True: Exit Function '静态密码
 If phandle <> 0 Then Call PostMessage(phandle, WM_SETTEXT, 0, ByVal password) Else SendPassword = False: Exit Function
 SendPassword = True
 End Function
 Private Function Login() As Boolean
 Dim bhandle As Long
 bhandle = GetDlgItem(chandle, &H3F2)
 If bhandle <> 0 Then
 PostMessage bhandle, WM_LBUTTONDOWN, ByVal 0&, ByVal 0&
 PostMessage bhandle, WM_LBUTTONUP, ByVal 0&, ByVal 0&
 Else
 Login = False: Exit Function
 End If
 Login = True
 End Function
 
 Private Sub Minimize()
 Dim ahandle As Long
 Do
 ahandle = FindWindowEx(mhandle, 0&, "AfxWnd42", vbNullString)
 DoEvents
 Loop Until ahandle <> 0
 SendMessage mhandle, WM_CLOSE, ByVal 0&, ByVal 0&
 End Sub
 Public Function OperateNetKeeper() As Boolean
 If Not OpenNetKeeper() Then OperateNetKeeper = False: Exit Function
 If Not SendPassword() Then OperateNetKeeper = False: Exit Function
 If Not Login() Then OperateNetKeeper = False: Exit Function
 Call Minimize
 'MsgBox "Finished!", , ""
 OperateNetKeeper = True
 End Function
 | 
 |