怎么知道Shell32是有哪些VBA 调用API函数数

VBA 调用API函数数是Windows底层函数VBA除了可鉯自动处理单元格数据以外,还可以通过VBA 调用API函数数操作和控制Office以外的程序、窗口

本课程前6节介绍VBA工程中如何添加和调用VBA 调用API函数数的方法。

第7-19节按功能类别介绍VBA 调用API函数数在实际工作中的运用

第20节介绍VB.Net或C#语言中如何调用API封装库。

本课程通过大量实例演示了如何查找窗口和控件的句柄、如何读写控件属性、如何自动操作菜单系统等核心知识。

}

关于剪切板的内容整理一下先运荇一下  注册控件 以防未注册提示

私有的 过程 命令按钮1单击()

1、先得添加一个 Form只要添加一个空的就好了,因为后面所用到的 DataObject 对象需要Form对象;

'这是使用VBA 调用API函数数来完全清空剪贴板内容的一个方法

私有的 声明 函数 打开剪切板 引用库 "user32" (传值变量 hwnd 为 长整型值) 为 长整型值

}

首先有必要向大家讲一讲,什麼是API所谓API本来是为C和C++程序员写的。API说来说去就是一种函数,他们包含在一个附加名为DLL的动态连接库文件中用标准的定义来讲,API就是Windows嘚32位应用程序编程接口是一系列很复杂的函数,消息和结构它使编程人员可以用不同类型的编程语言编制出的运行在Windows95和Windows NT操作系统上的應用程序。可以说如果你曾经学过VC,那么API对你来说不是什么问题但是如果你没有学过VC,或者你对Windows95的结构体系不熟悉那么可以说,学習API将是一件很辛苦的事情    如果你打开WINDOWS的SYSTEM文件夹,你可以发现其中有很多附加名为DLL的文件一个DLL中包含的VBA 调用API函数数并不只是一个,数十個甚至是数百个。我们能都掌握它嘛?回答是否定的∶不可能掌握但实际上,我们真的没必要都掌握只要重点掌握Windos系统本身自带的VBA 调鼡API函数数就可以了。但在其中还应当抛开掉同VB本身自有的函数重复的函数。如VB的etAttr命令可以获得文件属性,SetAttr可以设置文件属性对API来讲吔有对应的函数GetFileAttributes和SetFileAttributes,性能都差不多如此地一算,剩下来的也就5、600个是的,也不少但,我可以敢跟你说只要你熟悉地掌握100个,那么伱的编程水平比现在高出至少要两倍尽管人们说VB和WINDOWS具有密切的关系,但我认为API更接近WINDOWS。如果你学会了API首要的收获便是对WINDOWS体系结构的認识。这个收获是来自不易的  如果你不依靠API会怎么样?我可以跟你说,绝大多是高级编程书本(当然这不是书的名程叫高级而高级的而是茬一开始的《本书内容》中指明《本书的阅读对象是具有一定VB基础的读者》的那些书),首先提的问题一般大都是从API开始因此可以说,你鈈学API你大概将停留在初级水平,无法往上攀登唯一的途径也许就是向别人求救∶我快死了,快来救救我呀这个怎么办,那个怎么办?煩不烦呢?当然现在网上好人太多(包括我在内,嘻嘻)但,你应当明白通过此途径,你的手中出不了好的作品这是因为缺乏这些知识伱的脑子里根本行不成一种总体的设计构思。  哇!这么长?如果你从来没有接触过API我想你肯定被吓住了。你也许考虑该不该继续学下去。不过不要担心幸运的是Microsoft的设计家们为我们提供了有用的工具,这便是API文本查看器     通过API文本查看器,我们可以方便地查找程序所需要嘚函数声明、结构类型和常数然后将它复制到剪贴板,最后再粘贴到VB程序的代码段中在大多数情况下,只要我们确定了程序所需要的函数、结构和常数这三个方面后就可以通过对API文本游览器的以上操作将他们加入到程序段中,从而程序中可以使用这些函数了这些是學习API最基本的常识问题,它远远占不到API的庞大的体系内容今后我们把精力浪费(这绝不是浪费)在哪里呢?那就是∶什么时候使用什么函数,什么时候使用什么结构类型什么时候使用什么常数。    但一点是清楚的。它不象你自己写的程序那样能够看到里面的运行机理也不像VB洎带的函数那样,能够从VB的联机帮助中查到其用法唯一的方法就是去学、查VB以外的资料。    Declare 语句用于在模块级别中声明对动态链接库 (DLL) 中外蔀过程的引用对此,你只要记住任何VBA 调用API函数数声明都必须写这个语句就可以了    Iib 指明包含所声明过程或函数的动态链接库或代码资源。也就是说它说明的是,函数或过程从何而来的问题    如在上例中,SetFocus Lib "user32"说明 函数 说明SetFocus函数在User32.dll中的另外一个名称是,SetFocus怎么两个名都一样呢?当然,也可以是不同的在很多情况下,Alias说明的函数名即别名最后一个字符经常是字符A,如SetWindowsText函数的另一个名称是SetWindowsTextA,表示为Alias "SetWindowsTextA"这个A只不过昰设计家们的习惯的命名约定,表示函数属于ANSI版本    那么,别名究竟有什么用途呢?从理论上讲别名提供了用另一个名子调用API的函数方法。如果你指明了别名那么 尽管我们按Declare语句后面的函数来调用该函数,但在函数的实际调用上是以别名作为首要选择的如,以下两个函數(Function,ABCD)声明都是有效的他们调用的是同一个 SetFocus函数∶    Declare Function 时的时候,函数名必须注意大小写而且不能改动。当然在很多情况下,由于函数声明昰直接从API文本游览器中拷贝过来的所以这种错误的发生机会是很少的,但您有必要知道这一点  Any。尽管其含义是允许任意参数类型作为┅个该VBA 调用API函数数的参数传递但这样做存在一定的缺点。其原因是这将会使得对目标参数的所有类型检查都会被关闭。这自然会给各種类型的参数调用带来了产生错误的机会  GetDIBits原函数。但你应当看到两者的区别在于,我们在改型的函数中强制指定lpBits参数为Long形这样就会使得函数调用中发生的错误机率减少到了最小。这种方法叫做"安全类型"声明   

}

我要回帖

更多关于 API函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信