- UID
- 97749
- 注册时间
- 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 |
|