⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vb的api编程精粹.txt

📁 VB API编程精粹,精选VB API,用典型的实例说明api应用
💻 TXT
📖 第 1 页 / 共 2 页
字号:
VB的API编程精粹(1)

 

所谓API就是“应用程序接口”(Application Programing Interface),是一些用C语言编写,由操作系统自身调用的函数。Windows API函数由许多“动态链接库”或DLL组成。在32位Windows中,核心的Windows 
API DLL有如下一些: 
gdi32.dll----图形显示界面的API。 
kernel32.dll----处理低级任务(比如内存和任务管理)的API。 
user32.d11----处理窗口和消息(Visual Basic程序员能把其中一些当作事件访问)的API。 
还不断有新的API出现,处理新的操作系统扩展,比如E-MAIL、联网和新的外设。 
由于Windows API函数不是Visual Basic的内部函数,所以在使用它们之前必须显式地加以声明。要想得到正确格式化的函数声明,可以访问WINAPI目录下的文件WIN32API.TXT。 
本文只对Win95系统的API函数加以说明并调用Win95的内置功能。 
重新启动计算机的实现 
在Windows下安装过程序的用户可能都有这样的体会,当安装完某些应用程序后,安装程序会要求重新启动计算机以使设置生效。那么,如果要用VB程序重新启动计算机该如何实现呢?其实利用ExitWindowsEx函数即可。 
程序的编写 
1.首先运行VB,然后新建一个工程(工程类型为标准EXE),然后双击Form1窗体,进入代码(Code)输入框,在其中输入: 
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved 
As Long)As Long 
2.点击“工具箱”中的commandbutton(命令按钮)工具,即可在窗体Form1中加入一个命令按钮,然后将该按钮属性中的Caption值定义为“重新启动”。完成之后双击该按钮,进入代码(code)输入框输入以下代码: 
Private Sub Command1_Click() 
ExitWindowsEx &H43,0 
End Sub 
程序的执行 
程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,然后点击“重新启动”按钮,即可重新启动计算机。 
磁盘格式化 
在Windows 9X中,当用鼠标右键单击“我的电脑”中的“3.5软盘A”然后在出现的右键菜单中选择“格式化”选项,就将弹出标准的“磁盘格式化”窗口。下面我们来看看如何在应用程序中利用函数轻松调用Windows 95标准的“磁盘格式化”窗口,实现对磁盘相应的操作功能。 
程序的编写 
1.与上例相同,首先运行VB,新建一个标准工程,然后利用“工具箱”在Form1窗体中加入一个命令按钮对象,将该命令按钮属性中的Caption值定义为“软盘格式化”。完成之后双击该按钮,在代码输入框中输入以下代码: 
Private Sub Command1_Click() 
Call FormatFloppy '调用FormatFloppy过程 
End Sub 
2.然后用鼠标右击窗体,选择右键菜单中的“添加/添加模块”选项,然后在出现的选择框中选择“模块”类型,接着在出现的模块代码输入框中加入以下代码:(注:模块是指一组声明的集合,其后为过程) 
'通用声明 
Public Const WM_CLOSE=&H10 
Declare Function FindWindow Lib "user32" Alias"FindWindowA"(ByVal lpClassName As Any, ByVal 
lpWindowName As Any)As Long 
Delare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer 
As String, ByVal nSize As Long) As Long 
Declare Function SetWindowPos Lib "user32"(BvVal 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 GetDesktopWindow Lib "user32"() As Long 
Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long)As Long 
Declare Function GetWindowRect Lib "user32"(ByVay hwnd As Long, lpRect As RECT) As Long 
Declare Sub Sleep Lib "kernel32" (ByValdwMilliseconds As Long) 
Type RECT 
Left As Long 
Top As Long 
Right As Long 
Bottom As Long 
End Type 
TypePOINTAPI 
X As Long 
y As Long 
End Type 
Const SWP_NOSIZE=&H1 
Const SWP_NOZORDER=&H4 
'FormatFloppy()过程声明 
Public Sub FormatFloppy() 
Dim sBuffer As String, Windir As String, Procs As String, X 
Dim lResult As Long 
sBuffer = String$(255,0) 
lResult = GetWindowsDirectory(sBuffer, Len(sBuffer)) 
Windir = Trim(sBuffer) 
Procs = Left(Windir, lResult) & " undll32.exe shell32.dll,SHFormatDrive" 
Call CenterDialog("Format - 3? Floppy (A:)") 
X = Shell(Procs,1) 
Call CenterDialog("Format - 3? Floppy (A:)") 
k = LockWindowUpdate(0) 
End Sub 
' CenterDialog 过程声明 
Public Sub CenterDialog(WinText As String) 
DoEvents 
On Error Resume Next 
Dim D3 As Long 
D3 = LockWindowUpdate(GetDesktopWindow()) 
Dim wdth% 
Dim hght% 
Dim Scrwdth% 
Dim Scrhght% 
Dim lpDlgRect As RECT 
Dim lpdskrect As RECT 
Dim hTaskBar As Long 
hTaskBar = FindWindow(0&,WinText) 
Call GetWindowRect(hTaskBar, lpDlgRect) 
wdth% = lpDlgRect.Right - lpDlgRect.Left 
hght% = lpDlgRect.Bottom - lpDlgRect.Top 
Call GetWindowRect(GetDesktopWindow(),lpdskrect) 
Scrwdth% = lpdskrect.Right - lpdskrect.Left 
Scrhght% = lpdskrect.Bottom - lpdskrect.Top 
X% = (Scrwdth% - wdth%) / 2 
y% = (Scrhght% - hght%) / 2 
Call SetWindowPos(hTaskBar, 0, X%, y%,0,0, SWP_NOZORDER Or SWP_NOSIZE) 
DoEvents 
End Sub 
程序的执行 
程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,点击“软盘格式化”按钮后选择要格式化的容量,即可对3.5英寸盘进行格式化操作。 
调用版本信息框 
在Windows程序中,点击“帮助”菜单中的“关于XXX”选项后,就会弹出该程序的版本信息框。其实,在 
VB中,调用shellAbout函数不但可以实现标准的软件版本信息框,还可以随意更改其中的内容呢! 
程序的编写 
1.与前面类似,首先运行VB并新建一个标准工程,然后双击Form1窗口,在代码输入框中输入ShellAbout过 
程代码: 
Private Declare Function ShellAbout Lib "shell32.dlI" Alias "ShellAboutA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Long) As Long 
其中ShellAbout声明如下: 
HWnd设置窗口句柄,szApp设置窗口的“Caption”,szOtherStuff在“版权所有”和“使用权”之间的空白 
处增加额外说明。 
2.然后利用“工具箱”在Form1窗体中加入一个命令按钮对象,将该命令按钮属性中的Caption值定义为“版 
本信息框”。完成之后双击该按钮,在代码输入框输入以下代码: 
Private Sub Command1_Click() 
Call ShellAbeut(hWnd, "何发武天使工作室!","版本信息框" & VbCrLf & "上帝与你同在!阿弥陀佛!",0) 
End Sub 
程序的执行 
程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,点击“版本信息框”按钮,即可查看当前软件的版本信息。 
查看“属性” 
在Windows 9X中,增加了一个全新的概念--“属性”,每个对象都拥有自己的“属性”,在“属性”窗口里是关于对象的详细描述,并且不同的对象“属性”窗口的说明是不同的。我们可以用ShellExecuteEX函数直接调用“属性”标准窗口。下面的程序功能相当于用鼠标右键单击根目录下的“Autoexec.bat”并选择“属性”时,弹出的标准“属性”窗口。 
程序的编写 
1.首先运行VB,然后新建一个标准工程,然后利用“工具箱”在Form1窗体中加入一个命令按钮对象,将该命令按钮属性中的Caption值定义为“属性按钮”。完成之后双击该按钮,在代码输入框中输入以下代码: 



VB的API编程精粹(2)

 

您的支持我们的动力 rosibo Private Sub Command1_Click() 
Dim r As Long 
Dim FileName As String 
FileName = "c:autoexec.bat" 
r=ShowProperties(FileName,Me.hwnd) 
If r<=32 Then MsgBox "Error! NO c:autoexec.bat File" 
End SuB 
2.然后用鼠标右击窗体,选择右键菜单中的“添加/添加模块”选项,然后在出现的选择框中选择“模块”类型,接着在出现的模块代码输入框中加入以下代码: 
'通用声明 
Option Explicit 
Type SHELLEXECUTEINFO 
cbSize As long 
Fmask As Long 
hwnd As Long 
lpVerb As String 
lpFile As String 
lpParameters As String 
lpDirectory As String 
nShow As Long 
hInstApp As Long 
lpIDList As Long 
lpClass As String 
hkeyClass As Long 
dwHotKey As Long 
hIcon As Long 
hProcess As Long 
End Type 
Public Const SEE_MASK_INVOKEIDLIST = &HC 
Public Const SESE_MASK_NOCLOSEPROCESS=&H40 
Public Const SEE_MASK_FLAG_NO_UI = &H400 
Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long 
'ShowProperties过程 
Public Function ShowProperties(FileName As String, OwnerhWnd As Long) As Long 
Dim SEI AS SHELLEXECUTEINFO 
Dim r As Long 
With SEI 
.cbSize = Len(SEI) 
.fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI 
.hwnd = OwnerhWnd 
.lpVerb = "properties" 
.lpFile = FileName 
.lpParameters = vbNullChar 
.lpDirectory = vbNullChar 
.nShow = 0 
.hInstApp = 0 
.lpIDList = 0 
End With 
r = ShellExecuteEX(SEI) 
ShowProperties = SEI.hInstApp 
End Function 
程序的执行 
程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,点击“属性按钮”按钮,即可查看C:AUTOEXEC.BAT的属性。 


在上篇的中我们介绍了API编程的基础知识和一些比较“酷”的API调用,这期我们将配合专题介绍关于注册表编程的API函数及其应用实例,使读者朋友何能够将前面学到的注册表知识推广到VB编程中,继续向VB高手迈进(路漫漫……)。当然,上期说过要介绍更“酷”的API调用,可不能食言,后半部分介绍的平面工具条的生成定会使您的程序更“炫”! 
一. 注册表的API编程 
关于注册表的知识相信您通过前面专题的介绍已经有了较深入的了解。系统有六个预定义好的关键字,这六个关键字是用户或系统访问注册表的入口点。我们常用到的只有前四个关键字。而在编程时我们一般用到只是HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE这两个关键字,因为与应用程序相关的数据存在于这两个关键字下。 
许多商品化的软件或专业化的软件在您的机器上首次安装的时候都会通过改写注册表来完成软件的正确安装运行,梦想成为编程高手的你当然需要掌握读写注册表这一技术。利用好注册表会为您的应用程序增色不少。 
虽然VB本身提供了四个关于注册表的函数GetSetting,SaveSetting、GetAllSettings、DeleteSetting(这四个函数的使用比较简单读者可以参考VB的联机帮助),但是这四个函数只能在“HKEY_CURRENT_USERSoftwareVB and VBA ProgramSettings”下读取、删除、修改键值。对于一般的应用程序利用它们可以达到您的目的,对于特殊的要求利用它们就显的无能为力了。下面举一个例子说明它们的局限性。 
熟悉DOS操作系统的读者都知道,可以编写一个“Autoexec.bat”的批处理文件来实现某一个应用程序在系统启动的时候自动运行,在Win95中我们可以把应用程序的快捷方式放到系统的启动组中来达到同样的效果。但是,假如我需要在我的应用程序首次安装以后就能自动达到这种效果,那该如何呢?其实,注册表中提供了三个这样的键: 
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun 
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce 
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices 
这三个键字的区别是: 
Run:此键字下的应用程序在系统启动的时候会自动运行; 
RunOnce:此键字下的应用程序在系统下一次启动的时候会自动运行,以后不再运行; 
RunServices:功能和“Run”一样,只是应用程序被启动的时候不同而已。 
现在您一定知道该如何利用注册表达到您的要求了。实际上许多安装软件在安装向导完成后要您重新启动才能完成最终的安装。它就是把安装向导所需做的最后工作的程序写到“RunOnce”下实现的。但是,若只利用VB本身的那四个函数显然是无法实现此功能的。笔者在实践中通过调用API函数很好地解决了VB本身访问注册表的局限性,并把它做成了一个类模块。所以调用起来非常方便。由于篇幅有限我只能从中抽取一部分来讲,这一部分也是可以独立运行的。读者想要完整的源代码请与我联系(yue_xiang@263.net)。 
下面是应该放到您的模块中的声明部分代码: 
Option Explicit 
'注册表的入口常量 
Public Const HKEY_CLASSES_ROOT = &H80000000 
Public Const HKEY_CURRENT_USER = &H80000001 
Public Const HKEY_LOCAL_MACHINE = &H80000002 
Public Const HKEY_USERS = &H80000003 
'注册表的访问权限常量 
Public Const KEY_QUERY_VALUE = &H1 
Public Const KEY_SET_VALUE = &H2 
Public Const KEY_CREATE_SUB_KEY = &H4 
Public Const KEY_ENUMERATE_SUB_KEYS = &H8 
Public Const KEY_NOTIFY = &H10 
Public Const KEY_CREATE_LINk = &H20 
Public Const KEY_ALL_ACCESS = &H3F 
'打开/建立键值的可选项常量 
Public Const REG_OPTION_NON_VOLATILE = 0& 
Public Const REG_OPTION_VOLATILE = &H1 
'建立新键或打开已存在的键常量 
Public Const REG_CREATED_NEW_KEY = &H1 
Public Const REG_OPENED_EXISTING_KEY = &H2 
'预先定义的访问注册表的权限常量 

⌨️ 快捷键说明

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