深入浅出的VB呼叫Windows API简易实用案例.doc_第1页
深入浅出的VB呼叫Windows API简易实用案例.doc_第2页
深入浅出的VB呼叫Windows API简易实用案例.doc_第3页
深入浅出的VB呼叫Windows API简易实用案例.doc_第4页
深入浅出的VB呼叫Windows API简易实用案例.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

深入浅出的VB呼叫Windows API简易实用案例【目标】1. 用windows预设的程序打开一个指定的文件;2. 打击按钮,一键开启浏览器并进入自己预设的网址;3. 只需一键搞定如下过程:“打开浏览器,输入用户名和密码,单击 登陆 进入163邮箱”。特别适合于有多个163邮箱的网友啦;4. 留给读者去想想,拓展笔者用的是Windows XP sp3和VB6.0企业版。所有代码都测试通过。交流邮箱:。一家之言哈,欢迎拍砖,欢迎盗版。【入门篇】一、什么是API?Windows 这个多任务系统除了协调应用程式的执行、分配记忆体、管理系统资源等之外, 她同时也是一个很大的服务中心,呼叫这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程式(Application),所以便称之为 Application Programming Interface,简称 API 函数。二、API能干啥?“这个功能VB做不出来!”“不全对,VB 没有提供这样的功能,呼叫 Windows API就可以了。”者总会这样回答这类问题。虽然有点偷懒,或者说不负责任,但这的确是事实。VB 所提供的常量、函数、控件虽然也不在少数,但是都十分标准,或者说规矩,想变点花样,通常是行不通的,这是笔者决定撰写本文的主要原因。最困难的是 Windows 的 API 实在太多了, 大约有 1500 个, 这还不包含 OLE、ODBC等特殊的 API,此外,如果我们把 API 按不同性质加以分类,则使用每一类 API 函数所应具备的背景知识亦各有不同, 以系统注册区相关的 API 函数为例, 就必须先了解 Windows 如何安排系统注册区,以及存取系统注册区的方式。不过也不必被 1500+ 个函数给打退堂鼓了,因为不是所有的程序设计都要仰赖 API, 当我们面对一个问题时,首先还是寻求VB 的解决方案,如果 VB 实在无法解决,才考虑使用API。当然,学习API是一件很枯燥的事情,考虑到大家的积极性问题,这里抽取一个简单实用的API供大家享用。三、ShellExecute API 函数名片ShellExecuteVB声明Declare Function ShellExecute Lib shell32.dll Alias ShellExecuteA (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long说明 查找与指定文件关联在一起的程序的文件名返回值Long,非零表示成功,零表示失败。会设置GetLastError参数表参数类型及说明hwndLong,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框lpOperationString,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它lpFileString,想用关联程序打印或打开一个程序名或文件名lpParametersString,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数lpDirectoryString,想使用的完整路径nShowCmdLong,定义了如何显示启动程序的常数值。请用下述任何一个常数SW_HIDE隐藏窗口,活动状态给令一个窗口SW_MINIMIZE最小化窗口,活动状态给令一个窗口SW_RESTORE用原来的大小和位置显示一个窗口,同时令其进入活动状态SW_SHOW用当前的大小和位置显示一个窗口,同时令其进入活动状态SW_SHOWMAXIMIZED最大化窗口,并将其激活SW_SHOWMINIMIZED最小化窗口,并将其激活SW_SHOWMINNOACTIVE最小化一个窗口,同时不改变活动窗口SW_SHOWNA用当前的大小和位置显示一个窗口,不改变活动窗口SW_SHOWNOACTIVATE用最近的大小和位置显示一个窗口,同时不改变活动窗口SW_SHOWNORMAL与SW_RESTORE相同四、说明 只要你会用基本的VB ,下面的内容就很容易看懂,并学会操作。考虑到篇幅问题,有关概念像句柄等可以忽略(其实我自己也没完全弄明白),只用关心怎么实现效果。下面直接进入实战【实战篇】一、怎么声明API要使用 API 函数,则必须在先把 API 函数的出处、函数名称、参数、返回值等宣告在代码的 通用、声明中,用到时就像调用VB内置函数一样了。由于声明较长,一般使用VB的辅助工具“API浏览器”(如图-1),步骤如下:1. 首先选取 VB 菜单命令“外接程序外接程序管理器”,找到VB 6 API Viewer,勾选“在启动中加载”、“加载/卸载”,单击确定。(如图-2)2. 然后选取 VB 菜单命令“外接程序API浏览器”命令,打开“API浏览器”,须利用菜单命令“文件加载文本文件”载入VB Winapi 目录底下的 Win32api.txt,接着在“可用项”底下即会列出所有的 API 函数。找到ShellExecute,选中 “私有”,单击“添加”。(如图-3)3. 此时再按下“复制”按钮,可将选取的函数宣告复制到剪贴簿,接着回到 VB 的程序代码窗口,找到“通用、声明”,ctrl+v,即可将函数的宣告从剪贴板复制过来。注解:不怕辛苦的话还可以把 【入门篇】“三、ShellExecute API 函数名片”中的“VB声明”完整的敲到电脑里二、如何用 Windows 预设的程序开启某一文件?举例来说,.txt 的文件希望用“记事本”开启、.doc 的文件用 Word 开启当我们想在 VB 程式中执行某一个程序时,最简单的方法是呼叫 Shell,例如“Shell Notepad D:test.txt”,但 Shell 叙述必须指定好执行档,所以并不适用于此一问题。想要像双击一样,自动用预设开启文件,需呼叫 ShellExecute API 函数, 先举个简单的例子, 假设想开启 D:Windows 目录的 test0.txt 文件, 则方法如下:1.打开vb,新建“标准 exe”。用实战一的方法声明ShellExecute API 函数:在通用声明部分输入Declare Function ShellExecute Lib shell32.dll Alias ShellExecuteA (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long2.添加命令按钮控件,在代码中写入:Private Sub Command1_Click()Call ShellExecute(Me.hwnd, open, C:WINDOWStest0.txt, , , 1)End Sub以上叙述笔者省略了参数四及参数五,其中参数四表示传递给执行档的参数,但由于此一 ShellExcute语句已经是用来开启文件,所以此一参数通常设定为,参数五则表示工作目录, 若设定为 , 则以文件的所在目录为工作目录。此外,参数六表示文件开启后显示的方式,前面有叙述。不过最后一个参数我个人比较喜欢用数字1。另外用别的参数是要在通用中提前声明的,否则会出现程序没回应现象,比如:Public Const SW_SHOWMINIMIZED = 2Public Const SW_SHOWMAXIMIZED = 3Public Const SW_SHOW = 53.完成功能啦!下面就是生成可执行文件了,就略用此方法,配合文本框或驱动器列表框、文件列表框等还可以灵活开启别的文档,比如.ppt、.doc等。或者在比较深的目录下建立一个文档,记录个人计划,用此方法方便访问。当然,这个是个引子,有点形式大于内容的味道。二、打击按钮,一键开启浏览器并进入自己预设的网址?咱们顺着上一个案例接着来蹬噔噔等3.添加命令按钮控件,在代码中写入:Private Sub Command2_Click()Dim url As Stringurl = 设定网址Call ShellExecute(Me.hwnd, open, url, , , 1)End Sub以上叙述中的参数url可以自由设定自己喜欢的网址,甚至是学校内部ftp资源地址。ShellExecute 函数的第二个参数也可以省略。仿照MsgBox的两种形式,上述函数形式还可以写成语句形式:Private Sub Command2_Click()Dim url As Stringurl = 设定网址ShellExecute Me.hwnd, , url, , , 1End Sub三、一键进入163邮箱还是接着上一个案例精彩立刻呈现!4.再添加命令按钮控件,在代码中写入:Private Sub Command3_Click()Dim id, psw, exe, url As String*用户名*id = wangjunliangvip*密码*psw = (这个保密哦)*向邮箱服务器提交的URL地址*url = /logins.jsp?url=http%3A%2F%2F%2Fcoremail%2Ffcg%2Fntesdoor2%3Fverifycookie%3D1%26language%3D-1%26style%3D-1&type=1&product=mail163&username= & id & &password= & psw & &submit=%B5%C7%A1%A1%C2%BC*向浏览器提交地址,并登录*ShellExecute Me.hwnd, vbNullString, url, vbNullString, , 1End SubvbNullString就是空字符串的意思。在这段代码中预先输入个人的用户名(id)和密码(psw),编译后只需一键就能搞定如下过程:“打开浏览器,输入用户名和密码,单击 登陆 进入163邮箱”。特别适合于有多个163邮箱的网友啊!不过一定要注意这个软件带有私人邮箱信息,要注意安全哦(建议放到U盘里或私人电脑中)。【号外】这和上一例中登陆百度是一个道理,邮箱登录时也要向服务器提交数据,然后服务器返回信息。向服务器提交数据,可以认为就是加入了用户名和密码的一段很长的网址,这个网址很可能加密了。有人问这个163登陆信息是怎么得到的,实话实说,从网上找到的。我一直认为在邮箱网页点击登录的一刹那,浏览器左下方状态栏中会显示这个信息,但遗憾的是至今没有得到163以外的邮箱的这类信息。听说有侦破类软件,可以监视程序间的数据流动,可能截获和类信息,不过我没试过。在此,希望读者各尽其才,试试别的邮箱像新浪、126等甚至博客、微博等怎么快速登录。欢迎大家到我的博客留言。还是那句话:一家之言哈,欢迎拍砖,欢迎盗版。【附件】一、界面(如图-4)二、源代码Private Declare Function ShellExecute Lib shell32.dll Alias ShellExecuteA (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Command1_Click()Call ShellExecute(Me.hwnd, open, C:WINDOWStest0.txt, , , 1)End SubPrivate Sub Command2_Click()Dim url As Stringurl = 设定网址,引号内的东西可以改为自己喜欢的网址CallShellExecute Me.hwnd, , url, , , 1MsgBoxEnd SubPrivate Sub Command3_Click()Dim id, psw, exe, url As String*用户名*id = wangjunliangvip*密码*psw = (保密)*向邮箱服务器提交的URL地址*url =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论