加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 08:14:53 所属栏目:百科 来源:网络整理
导读:一、句柄hwnd handle of window 窗体(或控件)的把柄,它是一个长整型,用来标识一个窗体或控件,同一时刻没有两个句柄是一样的。 Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long,ByVal lpText As String,ByVa


一、句柄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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读