【 tulaoshi.com - 编程语言 】
所谓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)&"undll32.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的属性。->