API函数在VB中的应用

2016-02-19 13:18 7 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐API函数在VB中的应用,赶紧看过来吧!

【 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的属性。->

来源:https://www.tulaoshi.com/n/20160219/1603726.html

延伸阅读
我在调用api时,发现了下面了几个问题: 1.SystemParameterInfo vb的api声明工具中第三个参数为 ByRef lpvParam as any. 但若想用来更改桌面壁纸时必须声明为ByVal lpvParam as any. 2.SendMessage 当声明为Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As ...
在VB中用API实现多媒体主要是调用Windows的mmsystem.dll库。以下为调用API的声明(这些代码放在程序的声明部分中): 1.′播放CD和AVI所需要的声明。 DeclareFunctionmciSendStringLib″MMSYSTEM″(ByVal lpstrCommandasString,ByVallpstrReturnStrasAny,By ValwRetumLenasInteger,ByValhCallBackasInteger)as Long ...
API函数是构筑Windows应用程序的基石,是Windows编程的必备利器。每一种Windows应用程序开发工具都提供了间接或直接调用了Windows API函数的方法,或者是调用Windows API函数的接口,也就是说具备调用动态连接库的能力。Visual C#和其它开发工具一样也能够调用动态链接库的API函数。本文中笔者就结合实例向大家介绍在Visual C#中如何调用各...
众所周知,VisualBasic是功能非常强大的多媒体开发工具,它有丰富的函数和方法处理各种各样的多媒体信息,能够很灵活的操作图形、声音、动画、影象等多媒体素材。但有时我们使用VisualBasic开发非多媒体应用程序,并不需要在应用程序中大量的使用声音,而只是需要在特定的场合出现。如Windows的警告声。这就要求程序员在恰当的环境中恰当的使用...
鼠标是WINDOWS环境下不可缺少的输入工具,在应用程序中灵活地使用鼠标功能,会给工作带来极大的方便.VISUAL FOXPRO6.0和VISUAL BASIC6.0是MICROSOFT VISUAL STUDIO98面向对象的可视化开发环境,它功能非常强大,而且设计程序简单实用.它提供了与鼠标操作有关的事件和API函数,所以编写鼠标功能程序就变得非常简单,只需在程序中调用这些事件和API...

经验教程

167

收藏

12
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部