win32apibas.bas

来自「电梯检测系统是对电梯性能进行检测的系统。是一个用来学习的程序。」· BAS 代码 · 共 193 行

BAS
193
字号
Attribute VB_Name = "Win32ApiBas"
Option Explicit
'窗口
Public Const HWND_TOPMOST = -1
Public Const HWND_TOP = 0

Public Const SWP_NOSIZE = &H1
Public Const SWP_SHOWWINDOW = &H40
Public Const SWP_NOMOVE = &H2
'网络
Public Const WN_SUCCESS = 0
Public Const WN_NET_ERROR = 59&
Public Const WN_BAD_PASSWORD = 86&
Public Const WN_BAD_NETNAME = 67&
Public Const WN_ALREADY_CONNECTED = 85&
Public Const WN_NOT_SUPPORTED = 50&
Public Const WN_NOT_CONNECTED = 2250&


'函数
Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hwnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Long) As Long
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Declare Function ReleaseCapture Lib "user32" () As Long

Global Const HELP_QUIT = 2
Global Const HELP_INDEX = 3
Global Const HELP_HELPONHELP = 4
Global Const HELP_PARTIALKEY = &H105

Global Const CB_ERR = -1
Global Const CB_FINDSTRING = &H14C
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpbuffer As String, nSize As Long) As Long

'文件关联

Global Const HKEY_CLASSES_ROOT = &H80000000
Global Const HKEY_CURRENT_USER = &H80000001
Global Const HKEY_LOCAL_MACHINE = &H80000002
Global Const HKEY_USERS = &H80000003
Global Const HKEY_PERFORMANCE_DATA = &H80000004
Global Const HKEY_CURRENT_CONFIG = &H80000005
Global Const HKEY_DYN_DATA = &H80000006

Public Const REG_NONE = 0
Public Const REG_SZ = 1
Public Const REG_EXPAND_SZ = 2
Public Const REG_BINARY = 3
Public Const REG_DWORD = 4
Public Const REG_DWORD_BIG_ENDIAN = 5
Public Const REG_MULTI_SZ = 7

Public Const MAX_PATH = 260

Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type

Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
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
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
Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long
Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long

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


'------------------------ Error Message ------------------
Global Const NoError = 0
Global Const FunctionError = 1
Global Const PortError = 2
Global Const BaudRateError = 3
Global Const DataError = 4
Global Const StopError = 5
Global Const ParityError = 6
Global Const CheckSumError = 7
Global Const ComPortNotOpen = 8
Global Const SendThreadCreateError = 9
Global Const SendCmdError = 10
Global Const ReadComStatusError = 11
Global Const ResultStrCheckError = 12
Global Const CmdError = 13
Global Const TimeOut = 15
Global Const ModuleIdError = 17
Global Const AdChannelError = 18
Global Const UnderInputRange = 19
Global Const ExceedInputRange = 20
Global Const InvalidateCounterNo = 21
Global Const InvalidateCounterValue = 22

'----------------------  UART.DLL -----------------------------------------------
Declare Function Open_Com Lib "uart.dll" (ByVal port As Byte, ByVal BaudRate As Long, _
             ByVal cData As Byte, ByVal cParity As Byte, ByVal cStop As Byte) As Integer

Declare Function Close_Com Lib "uart.dll" (ByVal port As Byte) As Boolean

Declare Function Send_Cmd Lib "uart.dll" (ByVal port As Byte, ByVal Cmd As String, _
             ByVal TimeOut As Integer, ByVal wChkSum As Integer) As Integer

Declare Function Read_Com_Status Lib "uart.dll" (ByVal port As Byte, ByVal Buf As String, _
                                                 status As Integer) As Integer

Declare Function Send_Str Lib "uart.dll" (ByVal port As Byte, ByVal Buf As String, _
        ByVal TimeOut As Integer, ByVal LenT As Integer, ByVal LenR As Integer) As Integer

Declare Function Send_Receive_Cmd Lib "uart.dll" (ByVal port As Byte, ByVal szCmd As String, _
        ByVal szResult As String, ByVal TimeOut As Integer, ByVal CheckSum As Integer, wT As Integer) As Integer


'---------------------------------Open A *.EXE file----------------------
Declare Function WaitForSingleObject Lib "kernel32" _
   (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Declare Function CloseHandle Lib "kernel32" _
   (ByVal hObject As Long) As Long
   
Declare Function OpenProcess Lib "kernel32" _
   (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
    ByVal dwProcessId As Long) As Long


Global Const INFINITE = -1&
Global Const SYNCHRONIZE = &H100000

Function SetExtOperation(ByVal ext As String) As String
    Dim hKey As Long, typeData As Long, lenData As Long
    Dim S As String, ret As Long, Name As String, Idx As Long
    Dim nSubKey As Long, maxSubKeyLen As Long, maxClassLen As Long
    Dim nValue As Long, maxValueNameLen As Long, maxValueLen As Long
    Dim sd As Long, WriteTime As FILETIME
    
    ret = RegOpenKey(HKEY_CLASSES_ROOT, ext, hKey)
    If ret <> 0 Then
        MsgBox LoadResString(1111), vbExclamation
        Exit Function
    End If
    ret = RegQueryValueEx(hKey, "", 0, typeData, ByVal vbNullString, lenData)
    If ret = 0 Then
        S = String(lenData, Chr(0))
        RegQueryValueEx hKey, "", 0, typeData, ByVal S, lenData
        S = left(S, InStr(S, Chr(0)) - 1)
        
        ret = RegOpenKey(HKEY_CLASSES_ROOT, S & "\shell", hKey)
        If ret <> 0 Then
            MsgBox LoadResString(1111), vbExclamation
            Exit Function
        End If
        ret = RegQueryInfoKey(hKey, vbNullString, 0, ByVal 0, _
                    nSubKey, maxSubKeyLen, maxClassLen, nValue, _
                    maxValueNameLen, maxValueLen, sd, WriteTime)
        Name = String(maxSubKeyLen + 1, Chr(0))
    
        For Idx = 0 To nSubKey - 1
            ret = RegEnumKey(hKey, Idx, Name, Len(Name))
            If ret = 0 Then
                SetExtOperation = left(Name, InStr(Name, Chr(0)) - 1)
                RegCloseKey hKey
                Exit Function
            End If
        Next
    End If
    MsgBox LoadResString(1111), vbExclamation
    RegCloseKey hKey
End Function





Sub HelpFunction(lhWnd As Long, HelpCmd As Integer, HelpKey As String)
   
Dim lRtn As Long 'declare the needed variables
   
If HelpCmd = HELP_PARTIALKEY Then
   lRtn = WinHelp(lhWnd, App.HelpFile, HelpCmd, HelpKey)
Else
   lRtn = WinHelp(lhWnd, App.HelpFile, HelpCmd, 0&)
End If
   
End Sub


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?