Visual_Basic程序设计(第二版)-电子教案-柳青 第10章 WINDOWS API应用基础

上传人:E**** 文档编号:89404025 上传时间:2019-05-24 格式:PPT 页数:30 大小:280.51KB
返回 下载 相关 举报
Visual_Basic程序设计(第二版)-电子教案-柳青 第10章  WINDOWS API应用基础_第1页
第1页 / 共30页
Visual_Basic程序设计(第二版)-电子教案-柳青 第10章  WINDOWS API应用基础_第2页
第2页 / 共30页
Visual_Basic程序设计(第二版)-电子教案-柳青 第10章  WINDOWS API应用基础_第3页
第3页 / 共30页
Visual_Basic程序设计(第二版)-电子教案-柳青 第10章  WINDOWS API应用基础_第4页
第4页 / 共30页
Visual_Basic程序设计(第二版)-电子教案-柳青 第10章  WINDOWS API应用基础_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《Visual_Basic程序设计(第二版)-电子教案-柳青 第10章 WINDOWS API应用基础》由会员分享,可在线阅读,更多相关《Visual_Basic程序设计(第二版)-电子教案-柳青 第10章 WINDOWS API应用基础(30页珍藏版)》请在金锄头文库上搜索。

1、Visual Basic程序设计(第二版),主编 柳青 严健武 中国水利水电出版社,第10章 Windows API应用基础,本章介绍关于API 函数使用的基本常识内容,包括API基本概念、何时使用API函数,以及使用API函数的一般规则和步骤,最后给出3个典型的API 函数使用实例。,10.1 Windows API与DDL,Windows API是 Windows Application Programming Interface 的简称,中文为“应用程序接口”,它包含成千上万的函数、例程、类型和常数定义,包含在不同的动态链接库DLL文件中,可以提供在Windows操作系统下不同开发语言共

2、享调用。Microsoft Windows 本身就是由若干个 DLL 组成的,其它应用程序可以调用这些库中的过程,完成窗口与图形的显示、内存管理或其他任务。这些过程有时被称为 Windows API,或应用程序接口。表10-1列出部分常用的操作系统环境库的DLL文件。,表10-1 常用的操作系统环境库的DLL文件,如果需要使用 Microsoft Visual Basic 核心语言和控件未包含的功能,例如:读写系统注册表、实现屏幕拷贝等功能,这些功能Visual Basic本身没有提供。对Visual Basic内部未提供的功能,可以考虑使用调用API函数或过程(以下均称为过程)实现,即可以直

3、接调用包含在动态链接库DLL中的API 过程。通过 DLL可以访问构成 Microsoft Windows 操作系统主体的成千上万个过程,还可以使用其它语言编写的各种例程。,10.1.2 DLL函数或过程的声明,Windows API的过程是用 C 语言编写的,在 Visual Basic 中使用它们之前,必须先进行声明。一般语法如下: (1)要声明一个 DLL 过程,需要在代码窗口的“声明”部分增加一个 Declare 语句。如果该过程返回一个值,应将其声明为 Function,即: Declare Function 函数名 Lib “库名“ Alias “别名“ (ByVal variab

4、le As type ,ByVal variable As type.) As Type 其中: 1)Variable为变量名,type为变量类型或返回值类型。 2)Lib “库名“ 表示包含函数或过程的.dll文件位置。如果引用的过程属于Windows核心库(User32、Kernel32 或 GDI32),可以不包含文件扩展名,例如: Declare Function GetTickCount Lib “kernel32“ Alias “GetTickCount“ () As Long 3)对于其它 DLL,Lib 子句指定文件的路径,即: Declare Function AFunc L

5、ib “C:AA.dll“ (ByVal S As Integer, ByVal D As Integer) As Long 4)如果未指定 libname 的路径,Visual Basic 将按照下列顺序查找该文件: .Exe 文件所在的目录当前目录Windows 位系统目录(通常为 WindowsSystem)Windows 目录Path 环境变量中的目录。,(2)如果过程没有返回值,可将其声明为 Sub,即: Declare Sub 过程名 Lib “库名“ Alias “别名“ (ByVal variable As type ,ByVal variable As type.) 通过在

6、Visual Basic 应用程序中声明外部过程,能够访问 Windows API (以及其它的外部 DLL)。声明过程后,调用方法与 Visual Basic的过程相同,10.2 使用Api View 声明API函数或过程,DLL 过程的声明是比较复杂的。尽管可以自己进行声明转换,最简单的办法是使用 Visual Basic提供的预定义Windows API声明,这些声明包含在Visual Basic安装目录下的Winapi Win32api.txt文件中,要使用该文件中的函数、类型等定义时,将所需要内容从该文件复制到 Visual Basic模块中即可。查看并复制 Win32api.txt

7、中的过程,可以直接在记事本中打开,通常使用Visual Basic开发环境外接程序管理器中的 API Viewer 应用程序进行查看和使用。,API Viewer 应用程序的步骤如下: 第1步:加载API Viewer应用程序。 在菜单栏上选择“外接程序外接程序管理器”选项,弹出“外接程序管理器”对话框,选择“VB6 API Viewer”并选中“加载/卸载”复选框,如图10-1所示;单击“确定”按钮后,在“外接程序”菜单中将看到“API 浏览器”菜单项。,图10-1 外接程序管理器,第2步:加载API声明文件。 在菜单栏上选择“外接程序API浏览器”选项,打开“API浏览器”窗口。在菜单栏上

8、选择“文件加载文本文件”选项,如图10-2所示;在弹出的“选择一个文本API文件”对话框中选择名称为“Win32Api.txt”的文本文件,单击“打开”按钮。完成本步骤后,将看到API 浏览器中“可用项”列表框中列出了常用的API声明,如图10-3所示。,图10-2 加载API声明文件,第3步:添加需要的API过程。 在图10-3所示的“API浏览器”中选择“API 类型”为声明,通过滚动条选择所需要的API过程,例如SetWindowText API过程,该过程实现修改窗体的标题栏的功能(当然,在VB中修改窗体的标栏设置其Caption属性更加简单,这里只是为了说明添加过程)。天价后,单击“

9、插入”按钮,弹出提示信息对话框,如图10-4所示。单击“是”按钮,完成添加。,图10-3 添加SetWindowText API 过程到窗体的代码文件,注意:如果要将API过程添加到窗体的代码文件中,必须选择“声明范围”为“私有”; 如果添加到标准模块中,可以选择“公有”和“私有”;如果在标准模块 也选择私有,则该过程只能在该模块中使用,反之,可以在项目的任何位置使用。,第4步:使用API过程。 打开窗体代码,可以看到插入的API 声明部分: Private Declare Function SetWindowText Lib “user32“ Alias “SetWindowTextA“ (

10、ByVal hwnd As Long, ByVal lpString As String) As Long 该过程功能是实现设置窗体的标题栏文字,需要两个参数: 参数1:窗体句柄,在VB中就是Me.hwnd 参数2:设置到窗体标题栏的字符串 在窗体上添加一个命令按钮Command1,并为其Click事件添加如下代码: Private Sub Command1_Click() SetWindowText Me.hwnd, “API函数使用“ End Sub 学习API过程的使用,不需要开始就学习每一个过程如何使用,而是在程序开发过程中遇到什么方法的问题,才去查找相应方面API过程的参考资料;学习

11、API的过程也是不断积累的过程。网上资源或书籍有很多关于API过程学习的资料,可以直接参考其范例中的声明部分。,10.3 API过程使用案例,10.3.1 案例:获取计算机的名称 例10-1 获取计算机的名称,如图10-5所示。 图10-5 运行结果 分析 可以使用GetComputerName的API过程获取计算机的名称,该过程可以通过前面介绍的添加“API 浏览器”方法,在“API浏览器”对话框中找到该过程的声明,再插入到当前窗体,然后象使用一般过程的方法调用该过程。,建立工程 1. 新建窗体,添加一个命令按钮。 2. 参见图10-1图10-3,在菜单栏上选择“外接程序API 浏览器”选项

12、,加载API文本文件后,在列出的“可用项”中找到GetComputerName (可以输入GetComputerName 前面几个字母,“可用项”中将快速跳到以此开头的过程),如图10-6所示。,图10-6 添加API过程声明,3. 使用GetComputerName过程 打开窗体代码文件,可以看到加入到代码中的声明部分: Private Declare Function GetComputerName Lib “kernel32“ Alias “GetComputerNameA“ (ByVal lpBuffer As String, nSize As Long) As Long GetCom

13、puterName过程需要两个参数:参数1 lpBuffer是字符串,保存取得的计算机名称,必须在调用该过程前,定义字符串有足够保存名称的长度;参数2 nSize是以地址传递方式传递的数字,指定lpBuffer字符串的长度,同时,过程调用结束时,该参数是实际获取的计算机名称的长度。,程序代码 在窗体中,为命令按钮Command1的Click事件编写以下代码,以调用该过程: Private Sub Command1_Click() Dim strName As String, NameLen As Long NameLen = 250 strName = String(NameLen, vbNu

14、llChar) GetComputerName strName, NameLen MsgBox “你的计算机名称是:“ & Left(strName, NameLen) End Sub 其中,vbNullChar为Vb中的空字符常数,相当于二进制的0;vbNullString为VB中的空字符串。 注意:调用 API 过程时,参数类型必须与声明的一致。本例中,如果实际计算机名称不超过250个字符(250是足够长的长度数),则字符串strName其余储存空间将被填充为不可显示的字符串结束标记。因此,用Left系统函数取得实际的计算机名称长度内容。,一般,如果API过程将改变字符串参数的内容,必须定

15、义该字符串变量有足够的长度,也可以定义为定长字符串,如Dim strName As String*250;如果API过程只是读取该参数,而不需要修改该参数,可以使用字符串常数,或非定长字符串变量并预先进行赋值。 思考:设置计算机名称的API过程声明如下: Private Declare Function SetComputerName Lib “kernel32“ Alias “SetComputerNameA“ (ByVal lpComputerName As String) As Long 如何使用该过程改变计算机名称?,10.3.2 案例:播放WAV声音文件 例10-2 播放WAV声音文

16、件。 分析 许多人都使用过即时通讯软件QQ,每当新信息到达时,QQ会发出“滴滴滴”的声响。实际上,这声音文件来自QQ安装目录下的Sound文件夹中的msg.wav文件。VB没有直接提供播放Wav声音文件的系统函数,可以用API函数sndPlaySound 来实现该功能。 参照例10-1中添加API过程的方法,在当前窗体中添加sndPlaySound的API过程声明,该声明为:Private Declare Function sndPlaySound Lib “winmm.dll“ Alias “sndPlaySoundA“ (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long 以上过程中,参数1 lpszSoundName需要指定Wav文件的位置,如果为VbNullString(VB中的空字符串),则停止声音的播放;参数uFlags是播放标记常数,该常数必须进行声明,其值可能是以下的几种:,Pr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号