所谓API就是“应用程序接口”(ApplicationProgramingInterface),是一些用C语言编写,由操作系统自身调用的函数。WindowsAPI函数由许多“动态链接库”或DLL组成。在32位Windows中,核心的Windows APIDLL有如下一些: gdi32.dll----图形显示界面的API。 kernel32.dll----处理低级任务(比如内存和任务管理)的API。 user32.d11----处理窗口和消息(VisualBasic程序员能把其中一些当作事件访问)的API。 还不断有新的API出现,处理新的操作系统扩展,比如E-MAIL、联网和新的外设。 由于WindowsAPI函数不是VisualBasic的内部函数,所以在使用它们之前必须显式地加以声明。要想得到正确格式化的函数声明,可以访问WINAPI目录下的文件WIN32API.TXT。 本文只对Win95系统的API函数加以说明并调用Win95的内置功能。 重新启动计算机的实现 在Windows下安装过程序的用户可能都有这样的体会,当安装完某些应用程序后,安装程序会要求重新启动计算机以使设置生效。那么,如果要用VB程序重新启动计算机该如何实现呢?其实利用ExitWindowsEx函数即可。 程序的编写 1.首先运行VB,然后新建一个工程(工程类型为标准EXE),然后双击Form1窗体,进入代码(Code)输入框,在其中输入: PrivateDeclareFunctionExitWindowsExLib"user32"(ByValuFlagsAsLong,ByValdwReserved AsLong)AsLong 2.点击“工具箱”中的commandbutton(命令按钮)工具,即可在窗体Form1中加入一个命令按钮,然后将该按钮属性中的Caption值定义为“重新启动”。完成之后双击该按钮,进入代码(code)输入框输入以下代码: PrivateSubCommand1_Click() ExitWindowsEx&H43,0 EndSub 程序的执行 程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,然后点击“重新启动”按钮,即可重新启动计算机。 磁盘格式化 在Windows9X中,当用鼠标右键单击“我的电脑”中的“3.5软盘A”然后在出现的右键菜单中选择“格式化”选项,就将弹出标准的“磁盘格式化”窗口。下面我们来看看如何在应用程序中利用函数轻松调用Windows95标准的“磁盘格式化”窗口,实现对磁盘相应的操作功能。 程序的编写 1.与上例相同,首先运行VB,新建一个标准工程,然后利用“工具箱”在Form1窗体中加入一个命令按钮对象,将该命令按钮属性中的Caption值定义为“软盘格式化”。完成之后双击该按钮,在代码输入框中输入以下代码: PrivateSubCommand1_Click() CallFormatFloppy'调用FormatFloppy过程 EndSub 2.然后用鼠标右击窗体,选择右键菜单中的“添加/添加模块”选项,然后在出现的选择框中选择“模块”类型,接着在出现的模块代码输入框中加入以下代码:(注:模块是指一组声明的集合,其后为过程) '通用声明 PublicConstWM_CLOSE=&H10 DeclareFunctionFindWindowLib"user32"Alias"FindWindowA"(ByVallpClassNameAsAny,ByVal lpWindowNameAsAny)AsLong DelareFunctionGetWindowsDirectoryLib"kernel32"Alias"GetWindowsDirectoryA"(ByVallpBuffer AsString,ByValnSizeAsLong)AsLong DeclareFunctionSetWindowPosLib"user32"(BvValhwndAsLongByValhWndInsertAfterAsLong, ByValXAslong,ByValyAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong DeclareFunctionGetDesktopWindowLib"user32"()AsLong DeclareFunctionLockWindowUpdateLib"user32"(ByValhwndLockAsLong)AsLong DeclareFunctionGetWindowRectLib"user32"(ByVayhwndAsLong,lpRectAsRECT)AsLong DeclareSubSleepLib"kernel32"(ByValdwMillisecondsAsLong) TypeRECT LeftAsLong TopAsLong RightAsLong BottomAsLong EndType TypePOINTAPI XAsLong yAsLong EndType ConstSWP_NOSIZE=&H1 ConstSWP_NOZORDER=&H4 'FormatFloppy()过程声明 PublicSubFormatFloppy() DimsBufferAsString,WindirAsString,ProcsAsString,X DimlResultAsLong sBuffer=String$(255,0) lResult=GetWindowsDirectory(sBuffer,Len(sBuffer)) Windir=Trim(sBuffer) Procs=Left(Windir,lResult)&"\rundll32.exeshell32.dll,SHFormatDrive" CallCenterDialog("Format-3?Floppy(A:)") X=Shell(Procs,1) CallCenterDialog("Format-3?Floppy(A:)") k=LockWindowUpdate(0) EndSub 'CenterDialog过程声明 PublicSubCenterDialog(WinTextAsString) DoEvents OnErrorResumeNext DimD3AsLong D3=LockWindowUpdate(GetDesktopWindow()) Dimwdth Dimhght DimScrwdth DimScrhght DimlpDlgRectAsRECT DimlpdskrectAsRECT DimhTaskBarAsLong hTaskBar=FindWindow(0&,WinText) CallGetWindowRect(hTaskBar,lpDlgRect) wdth=lpDlgRect.Right-lpDlgRect.Left hght=lpDlgRect.Bottom-lpDlgRect.Top CallGetWindowRect(GetDesktopWindow(),lpdskrect) Scrwdth=lpdskrect.Right-lpdskrect.Left Scrhght=lpdskrect.Bottom-lpdskrect.Top X=(Scrwdth-wdth)/2 y=(Scrhght-hght)/2 CallSetWindowPos(hTaskBar,0,X,y,0,0,SWP_NOZORDEROrSWP_NOSIZE) DoEvents EndSub 程序的执行 程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,点击“软盘格式化”按钮后选择要格式化的容量,即可对3.5英寸盘进行格式化操作。 调用版本信息框 在Windows程序中,点击“帮助”菜单中的“关于XXX”选项后,就会弹出该程序的版本信息框。其实,在 VB中,调用shellAbout函数不但可以实现标准的软件版本信息框,还可以随意更改其中的内容呢! 程序的编写 1.与前面类似,首先运行VB并新建一个标准工程,然后双击Form1窗口,在代码输入框中输入ShellAbout过 程代码: PrivateDeclareFunctionShellAboutLib"shell32.dlI"Alias"ShellAboutA"(ByValhWndAsLong,ByValszAppAsString,ByValszOtherStuffAsString,ByValhIconAsLong)AsLong 其中ShellAbout声明如下: HWnd设置窗口句柄,szApp设置窗口的“Caption”,szOtherStuff在“版权所有”和“使用权”之间的空白 处增加额外说明。 2.然后利用“工具箱”在Form1窗体中加入一个命令按钮对象,将该命令按钮属性中的Caption值定义为“版 本信息框”。完成之后双击该按钮,在代码输入框输入以下代码: PrivateSubCommand1_Click() CallShellAbeut(hWnd,"何发武天使工作室!","版本信息框"&VbCrLf&"上帝与你同在!阿弥陀佛!",0) EndSub 程序的执行 程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,点击“版本信息框”按钮,即可查看当前软件的版本信息。 查看“属性” 在Windows9X中,增加了一个全新的概念--“属性”,每个对象都拥有自己的“属性”,在“属性”窗口里是关于对象的详细描述,并且不同的对象“属性”窗口的说明是不同的。我们可以用ShellExecuteEX函数直接调用“属性”标准窗口。下面的程序功能相当于用鼠标右键单击根目录下的“Autoexec.bat”并选择“属性”时,弹出的标准“属性”窗口。 程序的编写 1.首先运行VB,然后新建一个标准工程,然后利用“工具箱”在Form1窗体中加入一个命令按钮对象,将该命令按钮属性中的Caption值定义为“属性按钮”。完成之后双击该按钮,在代码输入框中输入以下代码: PrivateSubCommand1_Click() DimrAsLong DimFileNameAsString FileName="c:\autoexec.bat" r=ShowProperties(FileName,Me.hwnd) Ifr<=32ThenMsgBox"Error!NOc:\autoexec.batFile" EndSuB 2.然后用鼠标右击窗体,选择右键菜单中的“添加/添加模块”选项,然后在出现的选择框中选择“模块”类型,接着在出现的模块代码输入框中加入以下代码: '通用声明 OptionExplicit TypeSHELLEXECUTEINFO cbSizeAslong FmaskAsLong hwndAsLong lpVerbAsString lpFileAsString lpParametersAsString lpDirectoryAsString nShowAsLong hInstAppAsLong lpIDListAsLong lpClassAsString hkeyClassAsLong dwHotKeyAsLong hIconAsLong hProcessAsLong EndType PublicConstSEE_MASK_INVOKEIDLIST=&HC PublicConstSESE_MASK_NOCLOSEPROCESS=&H40 PublicConstSEE_MASK_FLAG_NO_UI=&H400 DeclareFunctionShellExecuteEXLib"shell32.dll"Alias"ShellExecuteEx"(SEIAsSHELLEXECUTEINFO)AsLong 'ShowProperties过程 PublicFunctionShowProperties(FileNameAsString,OwnerhWndAsLong)AsLong DimSEIASSHELLEXECUTEINFO DimrAsLong WithSEI .cbSize=Len(SEI) .fMask=SEE_MASK_NOCLOSEPROCESSOrSEE_MASK_INVOKEIDLISTOrSEE_MASK_FLAG_NO_UI .hwnd=OwnerhWnd .lpVerb="properties" .lpFile=FileName .lpParameters=vbNullChar .lpDirectory=vbNullChar .nShow=0 .hInstApp=0 .lpIDList=0 EndWith r=ShellExecuteEX(SEI) ShowProperties=SEI.hInstApp EndFunction 程序的执行 程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,点击“属性按钮”按钮,即可查看C:\AUTOEXEC.BAT的属性。->
|