创建 ActiveX EXE 部件

来源:互联网 发布:曲江网络品牌推广 编辑:程序博客网 时间:2024/04/28 19:14

2004年12月7日  23:55:46


0.部件以对象方式提供可重用代码。通过创建对象并调用其属性和方法来使用部件的代码的应用程序,被称作客户,相对于使用部件对象的客户端而言,部件可以运行于进程内或进程外。进程外部件或 ActiveX EXE,在自己的地址空间中运行。而客户通常是运行在其它进程中的应用程序。
1.进程外部件运行在自己的进程中,这意味着客户端可以通知部件做某事,然后当部件工作时客户端可以继续它自己的工作。当这样的系统正确建立后,部件能在任务结束时使用异步通知来通知客户端,这在“建立代码部件”的“异步的回调与事件”中解释。
2.在类模块中被声明成 Public 的枚举型被添加到部件的类型库中。它与在其中定义它的类没有联系,但会成为全局名空间的一部分。(佛山83272853)
3.当 Visual Basic 包含 vbModal 和 vbModeless 时,为什么还要提供自己的常数呢?这些部件也许和不提供这些常数的开发工具一起使用。提供与 Visual Basic 兼容的常数是灵活的解决方案。
4.由进程外部件显示的与由进程内部件显示的模式和无模式窗体同客户应用程序的窗体的关系不同。首先,进程外部件显示的窗体不依赖于客户应用程序。它的生命期也不依赖于客户的生命期。其次,加载的窗体可以防止进程外部件的可执行程序被卸载。
5.一旦把 ActiveX EXE 工程放到运行状态,它就一直保持运行状态。这对于测试是非常方便的,但它的运转不同于做好的 .exe 文件。当最后的客户释放了最后的对由部件提供的对象的引用时,进程外部件的可执行程序就卸载了,所以进程外代码部件一般不是显示窗体的最好方法。
6.为客户提供异步通知是进程外部件最有趣的用途之一,也就是,当部件执行方法时,客户没有保持阻塞状态,当部件执行某个任务上或等待某事发生时,客户继续做自己的事务。部件的通知突然来到时,在客户部分没有任何特殊的行动。
7.使用在进程外部件中的窗体的对象,在这些窗体用完后要把它们释放掉。
8.用事件来提供通知的好处之一是只需要一次引用。也就是,TestForm 不需要引用 CoffeeMonitor 对象来使 Timer 控件给 CoffeeMonitor 发送事件。这避免了“部件设计的一般准则”的“循环引用的处理”中描述的循环引用问题。
9.当然,认真的程序员希望确保得到咖啡通知,而不管正在使用什么应用程序。可以为每个希望得到通知的程序创建独立的 CoffeeMonitor 对象,但如果计算机没有那么多串行口,这样做就不行。
10.正如对象应该释放掉它创建的所有窗体一样,它们应当释放掉它所使用的所有对象。因为对全局 CoffeeMonitor 的引用是在全局变量中,最后一个连接器对象必须把它释放。
11.当所有的客户都释放了对对象的引用时,已编译了的进程外部件才关闭,除非它具有一个加载的窗体。在编译时, TestForm 一直在运行 Coffee 部件,而 CoffeeMonitor 保持着对 TestForm 的引用。因为 CoffeeMonitor 对象利用全局变量而使自身不终止,所以该部件不会关闭。
12.另一种通知客户的技术是异步回调方法,在“使用回调方法的异步通知”中将讨论这种方法。回调实现起来比较困难,但它允许部件接收由客户端产生的返回值和错误,性能也稍好些。
13.没有用户接口的代码部件可以被称作无人监控的执行,这是说它们不与用户交互。对于进程外部件,该选项也能够多线程.


小结:

当创建新的 ActiveX EXE 部件时,一般应用下列步骤:
1.决定要提供的部件功能。
2.在逻辑上,把部件的功能划分给几个对象。
3.设计部件要显示的所有窗体。
4.设计接口,也就是部件提供的各个类的属性、方法和事件。
5.创建独立的测试工程,通常是 Standard Exe 工程。
6.实现部件使用的窗体。
7.实现各个类的接口。
8.当添加每个接口元素或特性时,把性能添加到测试工程中以测试新的功能。
9.编译 Exe 并用所有潜在的目标应用程序来进行测试。

 


 

 


 


 


 

 


 


 


 


 


 

 


 


 


 


 


 


 

 

 


 

 


 


 


 

 

 

原创粉丝点击