2022年VB_API入门教程 .pdf
《2022年VB_API入门教程 .pdf》由会员分享,可在线阅读,更多相关《2022年VB_API入门教程 .pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、接受网友的意见,写了一篇关于VB API 的文章,希望大家能从中学到一些知识。一、API 是什么?这个我本来不想说的,不过也许你知道其它人不知道,这里为了照顾一下新手,不得不说些废话,请大家谅解。Win32 API 即为 Microsoft 32 位平台的应用程序编程接口(ApplicationProgramming Interface)。所有在 in32 平台上运行的应用程序都可以调用这些函数。使用 Win32 API,应用程序可以充分挖掘Windows 的 32 位操作系统的潜力。Mircrosoft的所有 32 位平台都支持统一的API,包括函数、结构、消息、宏及接口。使用Win32 A
2、PI不但可以开发出在各种平台上都能成功运行的应用程序,而且也可以充分利用每个平台特有的功能和属性。以上为 API 的相关介绍,不过有些新手看了以后可能还是不怎么明白API 到底有什么用?这里请不要着急,如果你有足够耐心的话,请慢慢往下看。二、如何使用API?估计这才是大家真正关心的,那么如何使用API 呢?在了解API 之前,先打开你的VB书,翻到过程函数这章来,在搞清楚API 之前应该先搞懂过程函数是怎么一回事!如果你还不知道过程的工作方式,那么请先不要急着往下看,那样容易走很多弯路。好了,当你理解了过程函数时,也就是你可以使用API 的时候了,别把API 看得太难,你就像使用过程函数一样使
3、用API 就可以了。首先,让我们看看一个简单的API,以下:Private Declare Sub Sleep Lib kernel32 Alias Sleep(ByVal dwMilliseconds As Long)以上这个API 的呢是起一个延时作用。你如果是刚接触API 的话可能会感到API 的书写及其复杂,而且会感到很不适应。其实这没什么的,慢慢习惯就好了。至于API 这些复杂的书写你就不用操心了,在你安装VB 的时候微软已经帮我们带上了API 浏览器,这些全部都可以利用API 浏览器帮我们自动生成。API 浏览器的位置位于开始菜单程序Microsoft Visual Basic 6
4、.0 中文版 Microsoft Visual Basic 6.0 中文版工具API 文本浏览器。打开 API 浏览器,在最上面的一个文本框中输入Sleep,这时下面列表框中就会自动显示相应的API 函数,然后点右边添加按钮即可,接着点击复制按钮,这时你就可以用Ctrl+V把声明的API 添加到 VB 代码窗口中了。这里我要说一下,有些新手可能还弄不明白。API 的声明范围一般有两种模式,一种是Private(私有的),一种是 Public(公用的)。一般 Private 是声明在类模块或窗体类中,Public 声明在模块中。你在添加API 的时候,添加按钮下面就有API 的声明范围,可以根据
5、自己的需要进行添加。这里我们一般选择私有的(Private)就可以了。经过上面,我们知道如何添加API,接着我们分析一下API 声明,这是你了解API 必备的。首先看第一个单词Private,很显然,我上面刚刚讲过,这是申明一个私有的API 变名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 18 页 -,这个单词帮我们告诉VB 是在申明API 函数,一般申明外在的API函数时都必须带上这个单词。第三个 Sub,别告诉我你不知道什么意思?这就是我叫你先学习 VB 中过程函数的意思,这个说白了就是没有反回值,一般如果不是Sub 而是 Function都带有反回值的。第四个Lib,这个
6、是告诉VB 我们要声明哪一个DLL 中的 API 函数,也就是告诉VB 我们要申明第五个单词kernel32.dLL中的 API,一般写DLL 名称时都要用双引号括起来,如user32、shell32.dll 等,至于后面的.dll 这个可以带可不带。再来看第六个Alias,这个也是需要同后面一个一起用的,我们应该把第六个和第七个连起来一起看Alias Sleep,这个意思表示将被调用的过程在DLL 中还有另外的名称,这个是可选的。最后括号里面的,也就是和过程函数一样,你传入相应的值就可以了。上面我们分析完API 函数声明以后,接着我们就要自己动手写代码了。先把这个API复制到 Form1 代
7、码窗口中,然后写如下代码:Private Declare Sub Sleep Lib kernel32(ByV al dwMilliseconds As Long)Private Sub Form_Load()Sleep 2000 End Sub 解释一下,也就是在窗体启动时使用Sleep API进行延时 2秒,后面的参数 dwMilliseconds是表示你要延时的秒数,基本上和设置Timer 中的秒数一样。你再看一下Sleep2000 的使用方式,是不是和使用VB 过程函数一样呢?好了,我们的第一个VB API 程序写完了,可以看到使用API 并不是一件很难的事。三、如何才能提升你对API
8、 的学习兴趣?API,我常把它看做成过程函数,不过每人都有每人的见解和理解方式,自己的理解方式只要可以帮助自己更好的学习和掌握API,也没必要一定要学习他人的。1,自己做 MsgBox 了解 API 参数的使用方法是很重要的,这里我们不用VB 的 MsgBox,直接使用API 弹出 MsgBox 消息框。首先,打开API 浏览器,选择MessageBox,大家可以用这个API 和VB 内置的 MsgBox 比较一下,其实 MsgBox 也就是 MessageBox 的缩写,只不过一个是API,一个是VB 内置的,但两者都是通过API 进行工作的。好了,选择私有声明方式,粘贴到VB 代码编辑窗口
9、中,然后新建一个CommandButton,写入以下代码:Private Declare Function MessageBox Lib user32 Alias MessageBoxA(ByVal hwnd As Long,ByVal lpText As String,ByV al lpCaption As String,ByVal wType As Long)As Long Private Sub Command1_Click()MessageBox Me.hwnd,这里是内容,标题,0 End Sub 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 18 页 -首先看第一个
10、参数Byval hWnd As Long,很显然这是一个长整形变量,所以我们这里需要传递的是数字,你可能会发现我们传递的并不是数字啊,而是Me.hwnd?很奇怪是吗?如果你真的有此疑问说明你是真心想要学习好API 的,现在就让我们来看看Me.hwnd 到底是什么东西?以下摘自VB 帮助文档:hWnd 属性:返回窗体或控件的句柄。句 柄:是由操作环境定义的一个唯一的整数值,它被程序用来标识或者切换到对象,如窗体或控件等。现在估计你差不多就已经明白了,我们调用的hwnd 其实是一个句柄整数值,你可以用Msgbox Me.hwnd看一下就知道了。至于Me 这是一个关键字,代表当前Form 窗体对象。
11、如:Me.Caption=标题、Me.BackColor=vbRed等。(“print Me.hwnd”输出不关掉窗体每次相同,关掉重新运行后不同)接上面的,首先我们传入了Me.hwnd,表示是当前窗口调用MessageBox,这里告诉大家一个技巧,也就是以后凡是看到Byval hwnd As Long,一般都是需要传入句柄的,至于传入哪个对象句柄,那就要看你是怎么实现的了。ByVal lpText As String,这个是字符串变量,标识着叫我们需要传入字符串进去,可以看里面的变量字符lpText,属于文本的意思,也就是说是用来显示MsgBox 中的消息文本的。ByVal lpCaptio
12、n As String,也是字符串变量,还是传入字符串进去。在看里面的变量字符 lpCaption,其实就是显示MsgBox 标题的。ByVal wType As Long,这是一个整形变量,需要传递整形数字,还是看里面的变量字符 wType,标识着显示MsgBox 类型,这里可以像VB 的 MsgBox 一样使用,如这里可以传入:vbYesNo,vbOkCancel 等,如果忽略那就传入0 即可。好了,按F5 启动程序,点击Command1,接着就会弹出一个消息框,这里我们制作以及分析 MsgBox 已经完成了。希望你能在这段学习到一些知识。2,来点实用的吧就拿隐藏Windows 任务管理器
13、来说吧,这里只能隐藏任务管理器中的窗口,不能隐藏进程。(问:有没有隐藏进程的?答:你想干什么?),当程序运行后你无法从任务管理器的窗口中关闭程序,只能从进程中进行终止。好了,还是老规矩,打开API浏览器,输入GetWindow 和 ShowWindow 两个 API,声明范围还是私有的,复制粘贴到Form 代码窗口中,嗯,好了?别急,还是 API 浏览器,选择 Combox 中的常数,输入 GW_OWNER 和 SW_HIDE这两个API 常数,然后粘贴到代码窗口中,问我这两个是干什么的?那就接着往下看吧。写入以下代码:Private Declare Function GetWindow Li
14、b user32(ByVal hwnd As Long,ByVal wCmd As Long)As Long Private Declare Function ShowWindow Lib user32(ByVal hwnd As Long,ByVal nCmdShow As Long)As Long Private Const GW_OWNER=4 Private Const SW_HIDE=0 Private Sub Form_Load()Dim lphWnd As Long lphWnd=GetWindow(Me.hwnd,GW_OWNER)ShowWindow lphWnd,SW_HI
15、DE 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 18 页 -又到了分析的时候了,这对刚入门的新手可谓是最激动的时候了。好了,还是老子,看看两个 API 的表面意思和传递值变量。先看 GetWindow,表面意思:获取窗口。传递值变量:hWnd 整形句柄,wCmd 整形命令值。再看 ShowWindow,表面意思:显示窗口。传递值变量:hWnd 整形句柄,nCmdShow整形命令值。然后是使用代码,先看lphWnd=GetWindow(Me.hwnd,GW_OWNER)这句,这句意思是获取当前窗口的所有者窗口句柄(“print Me.hwnd”输出不关掉窗体每次相同,关掉重新
16、运行后不同)。(“print lphwnd”输出不关掉窗体每次相同,关掉重新运行每次输出也相同),可以看到GetWindow 是 Function 过程函数,执行以后会返回相应的窗口句柄值,这个值为Long 整形(同句柄)。接着调用ShowWindow lphWnd,SW_HIDE,这句意思是显示lphwnd 这个句柄的窗口,关键一句是最后的SW_HIDE,这是 API 函数的常量。通过设置常量能让系统知道API 到底应该怎么执行显示窗口,是显示?还是隐藏?Hide 当然是隐藏的意思。好了,编译成Exe,运行后打开任务管理器,查看程序窗口,还有吗?我又要说一下了,有些人可能不懂为什么要用GW_
17、OWNER这些常量,这些到底有什么用?还有就是我怎么知道哪些API 对应哪些的常量?其实这些常量你只要稍微注意一下就知道它们是怎么回事了,如在GetWindow 中我使用 GW_OWNER,在 ShowWindow 中我使用 SW_HIDE 这些常量都有一个共同的特点,就是他们都是以API 的单词第一个字母为标准。如 GetWindow 相对应的常量就是Get(G)Window(W)=GW,ShowWindow 相对应的常就是 Show(S)Window(W)=SW,这些常量可以自己在VB 的 API 浏览器中找找看。(讲了这么多还是没讲常量到底有什么作用呵,GW_OWNER 寻找窗口所有者,
18、SW_HIDE 隐藏窗口,活动状态给另一个窗口)3.继续往下学吧。上面两个我们讲到了一般API 的使用方法,和一些API 常量的使用方法,接着我们来看看 API 类型的使用方法,在了解这一小节前请先搞懂VB 中的自定义类型(Type)这章,否则你可能会稀里糊涂的,到时别怪我没提醒你哦!这次让我们来获取一下鼠标指针的位置。这里教大家一个技巧,当你想用API 去实现某一特定的功能时,却又不知道该用哪个API,这时你可以就表面的意思到API 浏览器找找,有 70%以上的机率可以找到哦!现在就拿这个API 开刀,那我们应该如何找?别着急,往下看:如我们现在要获取鼠标指针位置,可以这样翻译一下:Get(
19、获取)Cursor(指针)Pos(位置),组合起来:GetCursorPos,呵呵,一条API 就这样出来了,到API 浏览器输入这个组合单词,呵,有吧?见以下:Private Declare Function GetCursorPos Lib user32 Alias GetCursorPos(lpPoint As POINTAPI)As Long 好了好了,高兴一下就算了,现在让我们分析一下这个API,看其它的没啥不同的,其中只有一个参数,就是最后一个变量有些不懂?在VB 中好像没有见过这个变量?不明白么?那就再继续往下看。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 18
20、 页 -POINTAPI?很显然,在VB 中并没有此类型,一般都是String、Integer、Long、Byte 等变量类型,那么这个也就理所当然的是自定义类型(问:什么是自定义类型?答:不知道,自已不会看书啊)。既然是自定义类型,那么我们如何才能知道它是如何定义的呢?这里也就不用你操心啦,还是API 浏览器,在最上面的Combox 中选择类型,这时下面List 中也就自然的把API 的相关类型显示出来了,现在我们开始在Text 文本框中输入我们需要的自定义类型,POINTAPI,点击添加,出来了吧?如下:Private Type POINTAPI x As Long y As Long E
21、nd Type 好了,现在开始写代码,添加一个Timer 控件,设置属性见以下:Interval=100 Enabled=True 双击 Timer 控件,转到代码环境中写入以下代码:Private Declare Function GetCursorPos Lib user32(lpPoint As POINTAPI)As Long Private Type POINTAPI x As Long y As Long End Type Private Sub Timer1_Timer()Dim lpPoint As POINTAPI GetCursorPos lpPoint Me.Captio
22、n=X=&lpPoint.x&Y=&lpPoint.y End Sub 好了,分析开始,紧张不?别紧张,没啥值得紧张的!见以下:Dim lpPoint As POINTAPI,申明一个POINTAPI 类型变量,我们学过自定义类型的朋友都知道,一般使用自定义类型时都需要先申明一个相关的类型变量方可使用。GetCursorPos lpPoint,这一步我不说你都知道,调用 API 呗。通过这个API 获取鼠标指针的相关信息。这里我们使用了自己声明的lpPoint 变量,那为啥要使用这个变量呢?这里我们回过头来就前两节我们所分析的那样进行分析,可以看到GetCursorPos 所需要传递的值,如果
23、是 Long,我们就传入整形数字,如果是 String,我们就传入字符串,这里是 POINTAPI,所以理所当然是要传入POINTAPI 类型,但是!VB 中的自定义类型不可以直接使用,所以我们需要先声明一个相同类型的变量。不知道说了这么多你懂了没?Me.Caption=X=&lpPoint.x&Y=&lpPoint.y,最后一句,也就是用来显示当前鼠标的坐标值的,我们通过声明的lpPoint 变量来获取相应的鼠标坐标值,如果你不懂,那就请你先把VB 自定义类型这章学完再说。这里关于API 的一些使用方法及范例就先介绍到这里,如果你还有耐心往下看下去的话,那我们就接着往下聊!名师资料总结-精品
24、资料欢迎下载-名师精心整理-第 5 页,共 18 页 -功力?何为API 功力?其实没必要搞那么清楚,首先需要搞明白的就是,你应该知道在什么环境下使用什么API,实现哪些功能应该使用哪些API!这才是我们需要的。1,试着自己从小程序开始写起。写小程序?对!在你写小程序时应该拣你最感兴趣的程序写,否则有可能你写到一半以后会觉得自己这个程序写得毫无价值,简直是在浪费时间,最后到头来还是功亏一篑。这里我拿什么当题材呢?我在这里也想了很久,最后还是决定选择一个注销Windows 程序来做题材(其实这是我当初学API 最想实现的功能)。注销 Windows 也就是退出Windows(重启,关机等都一样,
25、不都是退出的意思吗?),根据表面意思在API 浏览器中输入Exit(退出)Windows,看看有没有这个API?这里提醒一下,你在查找这个API 的时候还会看到ExitWindowsEX这个 API,其实这两个API 实现的功能一 样,前 者 是用 在16 位操 作 系 统上,只 不过 在Win32位 操 作 系 统 上 一般 都 使 用ExitWindowsEX。所以这里就使用后者。API 见以下:Private Declare Function ExitWindowsEx Lib user32 Alias ExitWindowsEx(ByVal uFlags As Long,ByV al
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年VB_API入门教程 2022 VB_API 入门教程
限制150内