Option ExplicitPrivate Declare Function RegQueryValueEx& Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey&, ByVal lpszValueName$, ByVal lpdwRes&, lpdwType&, ByVal lpDataBuff$, nSize&) Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long 'Private Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPublic Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Public Const PROCESS_TERMINATE = &H1 Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long Public Declare Function GetDlgCtrlID Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long Public Function GetVBPath() As String Dim s As String * 255, sVBEntry As String Dim lVBKey As Long, lType As Long, llen As Long, lrc As Long Dim sPath As String, strtemp As StringConst HKEY_LOCAL_MACHINE = &H80000002 Const KEY_QUERY_VALUE = &H1& Const KEY_ENUMERATE_SUB_KEYS = &H8& Const KEY_NOTIFY = &H10& Const READ_CONTROL = &H20000 Const STANDARD_RIGHTS_READ = READ_CONTROL Const KEY_READ = STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Const REG_SZ = 1 ' lRC = RegSaveKey(HKEY_LOCAL_MACHINE, "test.txt", Null) ' If lRC = 0 Then ' ' End If strtemp = "user1" ' Search for VB5 path sVBEntry = "SOFTWARE\点康默信息" sPath = "" s = "wwww" llen = Len(s) lrc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sVBEntry, 0, KEY_READ, lVBKey) If lrc = 0 Then ' ' RegOpenKeyEx succeeded ' lRC = RegQueryValueEx(lVBKey, "ServerName", 0, lType, s, lLen) ' If lRC = 0 Then sPath = Left$(s, lLen - 1) 'RegQueryValueEx succeded Else lrc = RegCreateKey(HKEY_LOCAL_MACHINE, sVBEntry, lVBKey) If lrc = 0 Then MsgBox "seuee"
RegCloseKey lVBKey End If lrc = RegSetValueEx(lVBKey, strtemp, 0, REG_SZ, ByVal s, llen) If lrc = 0 Then MsgBox "seuee"
If sPath <> "" Then GetVBPath = sPath Exit Function End If
' vb5 key not found, search for vb6 path sVBEntry = "Software\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual Basic" llen = Len(s) lrc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sVBEntry, 0, KEY_READ, lVBKey) If lrc = 0 Then lrc = RegQueryValueEx(lVBKey, "ProductDir", 0, lType, s, llen) If lrc = 0 Then sPath = Left$(s, llen - 1) ' vb6 key found Else sPath = InputBox("Please enter a valid path to NWind.mdb", "VB Path not found", "E:\Microsoft Visual Studio\VB98") End If RegCloseKey lVBKey End If GetVBPath = sPath End FunctionPublic Function cbEnumProcTest(ByVal hendl As Long, ByVal lParam As Long) As Boolean Dim process As Long Dim thread As Long thread = GetWindowThreadProcessId(hendl, process) cbEnumProcTest = True End FunctionPublic Function cbEnumProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean Dim sSave As String * 255, Ret As Long Dim strTitle As String Dim lrc As Long, process_T As Long
lrc = GetWindowThreadProcessId(hwnd, process_T) ' Form1.List2.AddItem Str$(lrc) '获得窗口列表 Ret = GetWindowTextLength(hwnd) sSave = Space(Ret) Ret = Len(sSave)
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
'Private Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPublic Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Const PROCESS_TERMINATE = &H1
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Public Declare Function GetDlgCtrlID Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
Public Function GetVBPath() As String
Dim s As String * 255, sVBEntry As String
Dim lVBKey As Long, lType As Long, llen As Long, lrc As Long
Dim sPath As String, strtemp As StringConst HKEY_LOCAL_MACHINE = &H80000002
Const KEY_QUERY_VALUE = &H1&
Const KEY_ENUMERATE_SUB_KEYS = &H8&
Const KEY_NOTIFY = &H10&
Const READ_CONTROL = &H20000
Const STANDARD_RIGHTS_READ = READ_CONTROL
Const KEY_READ = STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
Const REG_SZ = 1
' lRC = RegSaveKey(HKEY_LOCAL_MACHINE, "test.txt", Null)
' If lRC = 0 Then
'
' End If
strtemp = "user1"
' Search for VB5 path
sVBEntry = "SOFTWARE\点康默信息"
sPath = ""
s = "wwww"
llen = Len(s)
lrc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sVBEntry, 0, KEY_READ, lVBKey)
If lrc = 0 Then
' ' RegOpenKeyEx succeeded
' lRC = RegQueryValueEx(lVBKey, "ServerName", 0, lType, s, lLen)
' If lRC = 0 Then sPath = Left$(s, lLen - 1) 'RegQueryValueEx succeded
Else
lrc = RegCreateKey(HKEY_LOCAL_MACHINE, sVBEntry, lVBKey)
If lrc = 0 Then MsgBox "seuee"
RegCloseKey lVBKey
End If
lrc = RegSetValueEx(lVBKey, strtemp, 0, REG_SZ, ByVal s, llen)
If lrc = 0 Then MsgBox "seuee"
If sPath <> "" Then
GetVBPath = sPath
Exit Function
End If
' vb5 key not found, search for vb6 path
sVBEntry = "Software\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual Basic"
llen = Len(s)
lrc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sVBEntry, 0, KEY_READ, lVBKey)
If lrc = 0 Then
lrc = RegQueryValueEx(lVBKey, "ProductDir", 0, lType, s, llen)
If lrc = 0 Then
sPath = Left$(s, llen - 1) ' vb6 key found
Else
sPath = InputBox("Please enter a valid path to NWind.mdb", "VB Path not found", "E:\Microsoft Visual Studio\VB98")
End If
RegCloseKey lVBKey
End If
GetVBPath = sPath
End FunctionPublic Function cbEnumProcTest(ByVal hendl As Long, ByVal lParam As Long) As Boolean
Dim process As Long
Dim thread As Long
thread = GetWindowThreadProcessId(hendl, process)
cbEnumProcTest = True
End FunctionPublic Function cbEnumProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean
Dim sSave As String * 255, Ret As Long
Dim strTitle As String
Dim lrc As Long, process_T As Long
lrc = GetWindowThreadProcessId(hwnd, process_T)
' Form1.List2.AddItem Str$(lrc)
'获得窗口列表
Ret = GetWindowTextLength(hwnd)
sSave = Space(Ret)
Ret = Len(sSave)
strTitle = GetWindowText(hwnd, ByVal sSave, Ret)
Form1.Print Str$(hwnd) + " " + sSave
Form1.List1.AddItem Str$(process_T) & "_" & Str$(lrc) & "_" & Str$(hwnd) & "_" & sSave
Form1.List1.ItemData(Form1.List1.NewIndex) = Str$(hwnd)
'continue enumeration
cbEnumProc = True
End Function