Windows API函数大全.doc_第1页
Windows API函数大全.doc_第2页
Windows API函数大全.doc_第3页
Windows API函数大全.doc_第4页
Windows API函数大全.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows API函数我们知道VB可以做很多事,但是有些事情,特别是涉及对Windows操作系统的访问,还需要借助Win32 API函数(Microsoft Win32 Application Programming Interface的缩写)。API函数是一组用C语言编写的函数,总共约有一千来个。原本是为C语言编程人员而编写的,但也可以在VB应用程序中调用。按功能划分,Win32 API函数大致涉及以下几个方面:窗口管理、图形设备接口、系统管理和多媒体技术。Win32 API函数以动态链接库DLL提供给用户,可以在任何语言中调用。DLL在程序运行时装入,随时响应程序的调用,不必在设计时就将文件存放在工程中,这就是动态链接的意思。正因为如此,一个DLL程序可以同时为多个程序所调用。在VB中引用API函数,需要事先通过Declare函数,声明要引用的DLL文件名称以及相应函数的参量。然后便可像使用VB函数一样使用API函数。 我们看以下类似的声明语句:Declare Function GetComputerName Lib kernel32 Alias GetComputerNameA (ByVal lpBuffer As String, nSize As Long) As LongGetComputerName是API函数名,kernel32是库名。括号中的ByVal lpBuffer As String, nSize As Long就是函数的参量。最后面的Long表示函数返回值的数据类型。本节通过例子说明Win32 API函数的应用。Windows在创建每个窗体时,都会赋给它一个与众不同的编号,这就是窗体的句柄。 在Windows中,窗体与控件都被看成是窗体(窗口)。窗体的句柄保存在自己的hwnd属性中。一GetComputerName【功能说明】函数用于获得计算机的名称【函数声明】Declare Function GetComputerName Lib kernel32 Alias GetComputerNameA (ByVal lpBuffer As String, nSize As Long) As Long【返回值】Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError【参数表】参数类型及说明lpBufferString,参数返回计算机的名称nSizeLong,参数返回lpBuffer参数的字符长度【示例】Private Sub Command1_Click()Dim name As String, length As Long length = 255 name = String(length, 0) ZYJMod1.GetComputerName name, length 通过函数测得的电脑名称存放在变量Name中 name = Left(name, length) Label1.Caption = nameEnd Sub二、GetCursorPos【功能说明】函数返回鼠标指针的当前位置【函数声明】Declare Function GetCursorPos Lib user32 (lpPoint As POINTAPI) As Long【返回值】Long,非零表示成功,零表示失败。会设置GetLastError【参数表】参数类型及说明lpPointPOINTAPI,参数返回鼠标的x,y位置坐标。【示例】Private Sub Command1_Click()Dim point As POINTAPI GetCursorPos point 通过函数获得鼠标的x,y位置坐标存放在变量point MsgBox (x,y)=( & point.x & , & point.y & ), , 鼠标位置End Sub 三、GetWindowsDirectory【功能说明】函数能获取Windows目录的完整路径名。【函数声明】Declare Function GetWindowsDirectory Lib kernel32 Alias GetWindowsDirectoryA (ByVal lpBuffer As String, ByVal nSize As Long) As Long【返回值】Long,实际存入lpBuffer缓冲区的字符数目,如lpBuffer不够大,不能容下文件名,则返回值为实际要求的缓冲区长度。零表示失败。【参数表】参数类型及说明lpBufferString,指定一个缓冲存储器,用于存放Windows目录名。nSizeLong,参数是这个缓冲存储器的大小【示例】Sub getwindowsdirectory_test() Dim s As String, length As Long s = String(MAX_PATH, 0) length = GetWindowsDirectory(s, MAX_PATH) s = Left(s, InStr(s, Chr(0) - 1) MsgBox Windows路径= & s, , GetWindowsDirectoryEnd SubWindows API函数四、ClipCursor【功能说明】将指针限制到指定区域。【函数声明】Public Declare Function ClipCursor Lib user32 Alias ClipCursor (lpRect As Any) As Long【返回值】Long,非零表示成功,零表示失败。会设置GetLastError【参数表】参数类型及说明lpRect指定一个矩形,用像素屏幕坐标系统表示。鼠标指针必须在这个区域内运动。可用它传递一个0,禁止指针剪切,恢复常规运作状态【示例】Private Sub Command1_Click() Dim r As RECT r.Left = 0: r.Top = 0 r.Right = 320: r.Bottom = 200 ClipCursor rEnd SubPrivate Sub Command2_Click() ClipCursor 0End Sub五、GetProfileInt【功能说明】取得win.ini初始化文件中指定条目的一个整数值【函数声明】Public Declare Function GetProfileInt Lib kernel32 Alias GetProfileIntA (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal nDefault As Long) As Long【返回值】Long,找到条目的值;如指定的条目未找到,就返回默认值。如找到的数字不是一个合法的整数,函数就会返回其中合法的一部分。例如,对于“xyz=55zz”这个条目,函数会返回55。这个函数也能理解采用标准C语言格式的十六进制数字:用0x作为一个十六进制数字的前缀所以0x55ab等价于vb的&H55AB【参数表】参数类型及说明lpAppNameString,欲在其中搜索条目的小节名。这个字串不区分大小写lpKeyNameString,欲获取的项名或条目名。这个字串不区分大小写nDefaultLong,指定在条目未找到时返回的默认值【示例】Private Sub Command1_Click() Dim speed As Long speed = GetProfileInt(Windows, DoubleClickSpeed, 0) MsgBox windows & vbCrLf & DoubleClickSpeed= & speed, , GetProfileIntEnd Sub六、GetProfileString【功能说明】取得win.ini初始化文件中指定条目的一个字符串值【函数声明】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【返回值】Long,复制到lpReturnedString缓冲区的字节数量,其中不包括那些NULL中止字符。如lpReturnedString缓冲区不够大,不能容下全部信息,就返回nSize-1(若lpAppName或lpKeyName为NULL,则返回nSize-2)【参数表】参数类型及说明lpAppNameString,要在其中查找条目的小节名。这个字串不区分大小写。如果为vbNullString,则在lpReturnedString缓冲区装载这个.ini文件的所有小节的一个列表lpKeyNameString,欲获取的项名或条目名。这个字串不区分大小写。如果为vbNullString,则在lpReturnedString缓冲区装载指定小节内所有项的一个列表lpDefaultString,指定条目未找到时返回的默认值。可设为空()lpReturnedStringString,指定一个预先初始化好的字串缓冲区,长度至少为nSize个字符nSizeLong,装载到lpReturnedString缓冲区的最大字符数【示例】Private Sub Command1_Click() Dim S As String, length As Long S = String(1024, 0) length = GetProfileString(windows, programs, , S, Len(S) S = Left(S, length) List1.Clear List1.AddItem programs= & SEnd Sub七、Polygon【功能说明】描绘一个多边形,由两点或三点的任意系列构成。【函数声明】Declare Function Polygon Lib gdi32 Alias Polygon (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long【返回值】Long,非零表示成功,零表示失败。会设置GetLastError【参数表】参数类型及说明hdcLong,用于描绘的设备场景lpPoint在nCount POINTAPI结构数组中的第一个POINTAPI结构nCountLong,多边形的总点数(顶点数)【示例】Private Sub Command1_Click() Dim point(0 To 10) As POINTAPI point(0).x = 0: point(0).y = 100 point(1).x = 200: point(1).y = 100 point(2).x = 66: point(2).y = 200 point(3).x = 100: point(3).y = 0 point(4).x = 133: point(4).y = 200 Polygon Me.hdc, point(0), 5End SubWindows API函数八、SendMessage【功能说明】函数可以以多种方法来影响控件的操作特性,其方法取决于发送给程序的一个特定参数【函数声明】Declare Function SendMessage Lib user32 Alias SendMessageA (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long【返回值】Long,由具体的消息决定【参数表】参数类型及说明hwndLong,指定要接收消息的对象的句柄wMsgLong,消息的标识符wParamLong,与消息同时发送的附加信息lParamAny,与消息同时发送的附加信息【示例】Public Const EM_SCROLL = &HB5Public Const SB_PAGEUP = 2Public Const SB_PAGEDOWN = 3Private Sub Command1_Click() SendMessage Text1.hwnd, EM_SCROLL, SB_PAGEUP, 0End SubPrivate Sub Command2_Click() SendMessage Text1.hwnd, EM_SCROLL, SB_PAGEDOWN, 0End SubPublic Enum VBWin_Msg WM_NULL = &H0 WM_CREATE = &H1 WM_DESTROY = &H2 WM_MOVE = &H3 WM_SIZE = &H5 WM_ACTIVATE = &H6 WM_SETFOCUS = &H7 WM_KILLFOCUS = &H8 WM_ENABLE = &HA WM_SETREDRAW = &HB WM_SETTEXT = &HC WM_GETTEXT = &HD WM_GETTEXTLENGTH = &HE WM_PAINT = &HF WM_CLOSE = &H10 WM_QUERYENDSESSION = &H11 WM_QUIT = &H12 WM_QUERYOPEN = &H13 WM_ERASEBKGND = &H14 WM_SYSCOLORCHANGE = &H15 WM_ENDSESSION = &H16 WM_SHOWWINDOW = &H18 WM_WININICHANGE = &H1A WM_DEVMODECHANGE = &H1B WM_ACTIVATEAPP = &H1C WM_FONTCHANGE = &H1D WM_TIMECHANGE = &H1E WM_CANCELMODE = &H1F WM_SETCURSOR = &H20 WM_MOUSEACTIVATE = &H21 WM_CHILDACTIVATE = &H22 WM_QUEUESYNC = &H23 WM_GETMINMAXINFO = &H24 begin_r_winuser WM_PAINTICON = &H26 WM_ICONERASEBKGND = &H27 WM_NEXTDLGCTL = &H28 WM_SPOOLERSTATUS = &H2A WM_DRAWITEM = &H2B WM_MEASUREITEM = &H2C WM_DELETEITEM = &H2D WM_VKEYTOITEM = &H2E WM_CHARTOITEM = &H2F WM_SETFONT = &H30 WM_GETFONT = &H31 WM_SETHOTKEY = &H32 WM_GETHOTKEY = &H33 WM_QUERYDRAGICON = &H37 WM_COMPAREITEM = &H39 WM_COMPACTING = &H41 WM_COMMNOTIFY = &H44 /* no longer suported */ WM_WINDOWPOSCHANGING = &H46 WM_WINDOWPOSCHANGED = &H47 WM_POWER = &H48 WM_COPYDATA = &H4A WM_CANCELJOURNAL = &H4B end_r_winuser lParam of WM_COPYDATA message points to. begin_r_winuser #if(WINVER = 0x0400) WM_NOTIFY = &H4E WM_INPUTLANGCHANGEREQUEST = &H50 WM_INPUTLANGCHANGE = &H51 WM_TCARD = &H52 WM_HELP = &H53 WM_USERCHANGED = &H54 WM_NOTIFYFORMAT = &H55 WM_CONTEXTMENU = &H7B WM_STYLECHANGING = &H7C WM_STYLECHANGED = &H7D WM_DISPLAYCHANGE = &H7E WM_GETICON = &H7F WM_SETICON = &H80 #endif /* WINVER = 0x0400 */ WM_NCCREATE = &H81 WM_NCDESTROY = &H82 WM_NCCALCSIZE = &H83 WM_NCHITTEST = &H84 WM_NCPAINT = &H85 WM_NCACTIVATE = &H86 WM_GETDLGCODE = &H87 WM_SYNCPAINT = &H88 WM_NCMOUSEMOVE = &HA0 WM_NCLBUTTONDOWN = &HA1 WM_NCLBUTTONUP = &HA2 WM_NCLBUTTONDBLCLK = &HA3 WM_NCRBUTTONDOWN = &HA4 WM_NCRBUTTONUP = &HA5 WM_NCRBUTTONDBLCLK = &HA6 WM_NCMBUTTONDOWN = &HA7 WM_NCMBUTTONUP = &HA8 WM_NCMBUTTONDBLCLK = &HA9 WM_KEYFIRST = &H100 WM_KEYDOWN = &H100 WM_KEYUP = &H101 WM_CHAR = &H102 WM_DEADCHAR = &H103 WM_SYSKEYDOWN = &H104 WM_SYSKEYUP = &H105 WM_SYSCHAR = &H106 WM_SYSDEADCHAR = &H107 WM_KEYLAST = &H108 #if(WINVER = 0x0400) WM_IME_STARTCOMPOSITION = &H10D WM_IME_ENDCOMPOSITION = &H10E WM_IME_COMPOSITION = &H10F WM_IME_KEYLAST = &H10F #endif /* WINVER = 0x0400 */ WM_INITDIALOG = &H110 WM_COMMAND = &H111 WM_SYSCOMMAND = &H112 WM_TIMER = &H113 WM_HSCROLL = &H114 WM_VSCROLL = &H115 WM_INITMENU = &H116 WM_INITMENUPOPUP = &H117 WM_MENUSELECT = &H11F WM_MENUCHAR = &H120 WM_ENTERIDLE = &H121 #if(WINVER = 0x0500) WM_MENURBUTTONUP = &H122 WM_MENUDRAG = &H123 WM_MENUGETOBJECT = &H124 WM_UNINITMENUPOPUP = &H125 WM_MENUCOMMAND = &H126 #endif /* WINVER = 0x0500 */ WM_CTLCOLORMSGBOX = &H132 WM_CTLCOLOREDIT = &H133 WM_CTLCOLORLISTBOX = &H134 WM_CTLCOLORBTN = &H135 WM_CTLCOLORDLG = &H136 WM_CTLCOLORSCROLLBAR = &H137 WM_CTLCOLORSTATIC = &H138 WM_MOUSEFIRST = &H200 WM_MOUSEMOVE = &H200 WM_LBUTTONDOWN = &H201 WM_LBUTTONUP = &H202 WM_LBUTTONDBLCLK = &H203 WM_RBUTTONDOWN = &H204 WM_RBUTTONUP = &H205 WM_RBUTTONDBLCLK = &H206 WM_MBUTTONDOWN = &H207 WM_MBUTTONUP = &H208 WM_MBUTTONDBLCLK = &H209 #if (_WIN32_WINNT = 0x0400) | (_WIN32_WINDOWS 0x0400) WM_MOUSEWHEEL = &H20A WM_MOUSELAST = &H20A #Else WM_MOUSELAST = &H209 #endif /* if (_WIN32_WINNT = 0x0400) #define WHEEL_DELTA 120 /* Value for rolling one detent */ #endif /* _WIN32_WINNT = 0x0400 */ #if(_WIN32_WINNT = 0x0400) #define WHEEL_PAGESCROLL (UINT_MAX) /* Scroll one page */ #endif /* _WIN32_WINNT = 0x0400 */ WM_PARENTNOTIFY = &H210 WM_ENTERMENULOOP = &H211 WM_EXITMENULOOP = &H212 #if(WINVER = 0x0400) WM_NEXTMENU = &H213 / end_r_winuser WM_DEVICECHANGE = &H219 #endif /* WINVER = 0x0400 */ WM_MDICREATE = &H220 WM_MDIDESTROY = &H221 WM_MDIACTIVATE = &H222 WM_MDIRESTORE = &H223 WM_MDINEXT = &H224 WM_MDIMAXIMIZE = &H225 WM_MDITILE = &H226 WM_MDICASCADE = &H227 WM_MDIICONARRANGE = &H228 WM_MDIGETACTIVE = &H229 WM_MDISETMENU = &H230 WM_ENTERSIZEMOVE = &H231 WM_EXITSIZEMOVE = &H232 WM_DROPFILES = &H233 WM_MDIREFRESHMENU = &H234 #if(WINVER = 0x0400) WM_IME_SETCONTEXT = &H281 WM_IME_NOTIFY = &H282 WM_IME_CONTROL = &H283 WM_IME_COMPOSITIONFULL = &H284 WM_IME_SELECT = &H285 WM_IME_CHAR = &H286 #endif /* WINVER = 0x0400 */ #if(WINVER = 0x0500) WM_IME_REQUEST = &H288 #endif /* WINVER = 0x0500 */ #if(WINVER = 0x0400) WM_IME_KEYDOWN = &H290 WM_IME_KEYUP = &H291 #endif /* WINVER = 0x0400 */ #if(_WIN32_WINNT = 0x0400) WM_MOUSEHOVER = &H2A1 WM_MOUSELEAVE = &H2A3 #endif /* _WIN32_WINNT = 0x0400 */ WM_CUT = &H300 WM_COPY = &H301 WM_PASTE = &H302 WM_CLEAR = &H303 WM_UNDO = &H304 WM_RENDERFORMAT = &H305 WM_RENDERALLFORMATS = &H306 WM_DESTROYCLIPBOARD = &H307 WM_DRAWCLIPBOARD = &H308 WM_PAINTCLIPBOARD = &H309 WM_VSCROLLCLIPBOARD = &H30A WM_SIZECLIPBOARD = &H30B WM_ASKCBFORMATNAME = &H30C WM_CHANGECBCHAIN = &H30D WM_HSCROLLCLIPBOARD = &H30E WM_QUERYNEWPALETTE = &H30F WM_PALETTEISCHANGING = &H310 WM_PALETTECHANGED = &H311 WM_HOTKEY = &H312 #if(WINVER = 0x0400) WM_PRINT = &H317 WM_PRINTCLIENT = &H318 WM_HANDHELDFIRST = &H358 WM_HANDHELDLAST = &H35F WM_AFXFIRST = &H360 WM_AFXLAST = &H37F #endif /* WINVER = 0x0400 */ WM_PENWINFIRST = &H380 WM_PENWINLAST = &H38F WM_USER = &H400 Public Enum eWM_Msg WM_NULL = &H0 WM_CREATE = &H1 WM_DESTROY = &H2 WM_MOVE = &H3 WM_SIZE = &H5 WM_ACTIVATE = &H6 WM_SETFOCUS = &H7 WM_KILLFOCUS = &H8 WM_USER = &H400 End Enum九、GlobalMemoryStatus【功能说明】获取当前可用的物理和虚拟内存信息【函数声明】Declare Sub GlobalMemoryStatus Lib kernel32 (lpBuffer As memorystatus)【返回值】此函数无返回值。【参数表】参数类型及说明lpBuffer参数是一个指向名为MEMORYSTATUS的结构的指针。函数的返回信息会被存储在MEMORYSTATUS结构中【示例】Public Type MEMORYSTATUS dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwAvailPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As LongEnd Type Private Sub Form_paint() Dim memsts As MEMORYSTATUS Dim memory As Long GlobalMemoryStatus memsts Cls Print memory = memsts.dwTotalPhys Print 实际内存:, Format(memory 1024, #,#,#) & kb memory = memsts.dwAvailPhys Print 可用实际内存:, Format(memory 1024, #,#,#) & kb memory = memsts.dwTotalVirtual Print 虚拟内存:, Format(memory 1024, #,#,#) & kb memory = memsts.dwAvailVirtual Print 可用虚拟内存:, Format(memory 1024, #,#,#) & kbEnd Sub十、GetSystemMenu【功能说明】取得指定窗口的系统菜单的句柄。“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时出现的菜单。【函数声明】Declare Function GetSystemMenu Lib user32 Alias GetSystemMenu (ByVal hwnd As Long, ByVal bRevert As Long) As Long【返回值】Long,非零表示成功,零表示失败。会设置GetLastError【参数表】参数类型及说明hwndLong,窗口的句柄bRevertLong,如果设为True,表示接收原始的系统菜单【示例】十一、GetMenuItemInfo【功能说明】用一个MenuitemInfo结构取得(接收)与一个菜单条目有关的特定信息【函数声明】Declare Function GetMenuItemInfo Lib user32 Alias GetMenuItemInfoA (ByVal hmenu As Long, ByVal un As Long, ByVal b As Long, lpMenuItemInfo As menuiteminfo) As Long【返回值】Long,非零表示成功,零表示失败。会设置GetLastError【参数表】参数类型及说明hMenuLong,菜单的句柄unLong,菜单条目的菜单ID或位置bBoolean,如un指定的是条目位置,就为True,如指定的是一个菜单ID,则为FalselpMenuItemInfoMenuiteminfo,这个结构用于装载请求的信息【示例】十二、SetMenuItemInfo【功能说明】为一个菜单条目设置指定的信息,具体信息保存于MenuitemInfo结构中【函数声明】Declare Function SetMenuItemInfo Lib user32 Alias SetMenuItemInfoA (ByVal hmenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As menuiteminfo) As Long【返回值】Long,非零表示成功,零表示失败。会设置GetLastError【参数表】参数类型及说明hMenuLong,菜单的句柄unLong,菜单条目的菜单ID或位置boolBoolean,如un指定的是条目位置,为True,如指定的是菜单ID,则为FalselpMenuItemInfoMenuiteminfo,用于设置目标菜单条目的特征【示例】十三、SetCursorPos【功能说明】设置指针的位置【函数声明】Declare Function SetCursorPos Lib user32 Alias SetCursorPos (ByVal x As Long, ByVal y As Long) As Long【返回值】Long,非零表示成功,零表示失败。会设置GetLastError【参数表】参数类型及说明x,y鼠标指针在屏幕像素坐标系统中的X,Y位置【示例】Private Sub Command1_Click()Dim x As Long, y As Longx = Screen.Width Screen.TwipsPerPixelX 2y = Screen.Height Screen.TwipsPerPixelX 2SetCursorPos x, yEnd Sub十四、SetWindowPos【功能说明】函数用于改变窗口的位置和大小【函数声明】Declare Function SetWindowPos Lib user32 Alias SetWindowPos (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【返回值】Long,非零表示成功,零表示失败。会设置GetLastError【参数表】参数类型及说明hwndLong,欲移动的窗体句柄hWndInsertAfterLong,窗体句柄。在窗体列表中,要将hwnd指定的窗体置于这个窗体句柄的后面。也可能选用下述值之

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论