VB与API学习笔记(1)热身

前端之家收集整理的这篇文章主要介绍了VB与API学习笔记(1)热身前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


一、句柄hwnd

handle of window 窗体(或控件)的把柄,它是一个长整型,用来标识一个窗体或控件,同一时刻没有两个句柄是一样的。

Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long,ByVal lpText As String,ByVal lpCaption As String,ByVal wType As Long) As Long


1、Lib部分:来由哪个库(dll),常见如下:

Kernel32.dll windows核心函数

User32.dll 使用者操作界面函数

Gdi32.dll 图形外部界面函数

Comdlg.dll 通用对话框函数库 common dialog

Shell32.dll shell界面函数

winmm.dll 多媒体函数windows multimedia

Advapi.dll 高级API函数Advanced Windows 32 Base API DLL

Lz32.dll 压缩及解压函数

2、Alias部分:库中名为什么。若外面名与库内名一致,此部分省略

3、参数及返回值。



二、参数

参数前未标明的是传址方式,byval是传值方式。有时类型是Any时需小心。

字符串与定长字符串的区别。

'获取计算机名
'lpBuffer 字串指针
'nSize    字串总长度
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String,nSize As Long) As Long

Private Sub Command1_Click()
    Dim s As String,lngSize As Long
    lngSize = 255
    s = String(lngSize,0) '格式化255个空字符
    GetComputerName s,lngSize
    s = Left$(s,lngSize)
    Text1.Text = s
End Sub

'获取鼠标位置
'pointapi中x,y分别是屏幕像素位置
'返回值 Long,非零表示成功,零表示失败。
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type POINTAPI
    X As Long
    Y As Long
End Type
Dim p As POINTAPI

Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)
    Dim a As Long

    GetCursorPos p
    Text1.Text = p.X & "," & p.Y
End Sub


'取得系统目录
'长度取260
Private Declare Function GetSystemDirectory _
                Lib "kernel32" _
                Alias "GetSystemDirectoryA" (ByVal lpBuffer As String,_
                                             ByVal nSize As Long) As Long
Private Const MAX_PATH = 260

Private Sub Command1_Click()
    Dim s As String,max As Long

    s = String$(MAX_PATH,0)
    max = GetSystemDirectory(s,MAX_PATH)
    Text1.Text = Left$(s,InStr(s,Chr(0)) - 1) '截取字串
End Sub

'取得windows目录
'长度取260
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String,ByVal nSize As Long) As Long

Private Const MAX_PATH = 260

Private Sub Command1_Click()
    Dim s As String,0)
    max = GetWindowsDirectory(s,Chr(0)) - 1) '截取字串
End Sub

'取得操作系统版本,判断是什么操作系统
'Operating system Version number
'Windows 8 6.2
'Windows 7 6.1
'Windows Server 2008 R2 6.1
'Windows Server 2008 6.0
'Windows Vista 6.0
'Windows Server 2003 R2 5.2
'Windows Server 2003 5.2
'Windows XP 5.1
'Windows 2000 5.0
Private Declare Function GetVersionEx _
                Lib "kernel32" _
                Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long

Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128      '  Maintenance string for PSS usage
End Type

Private Sub Command1_Click()
    Dim ver As OSVERSIONINFO

    ver.dwOSVersionInfoSize = Len(ver)
    GetVersionEx ver
    Text1.Text = ver.dwMajorVersion & "." & ver.dwMinorVersion & "." & ver.dwBuildNumber & " " & ver.dwPlatformId
End Sub

猜你在找的VB相关文章