1、软件组件技术实验指导书 1实验 1 组件的使用实验目的:1进一步熟练掌握软件开发技术。2掌握 COM 组件的注册、查看和使用等过程。3了解熟悉注册表软件组件使用过程中的作用实验环境:Windows 系统平台和 C+ Builder 开发环境。实验学时:2 学时实验内容:给出一个软件组件,要求根据此说明,进行组件的注册、反注册、查看注册表、查看组件和类型库,并编写程序调用操控组件。要求记录操作的步骤和遇到的问题及解决方法,能够熟练使用组件。并掌握 Borland C+ Builder 环境下组件的注册、反注册,查看组件和类型库的方法,并用 C+ Builder 编写客户程序调用实现对所给组件的调
2、用。实验步骤:1 实验前首先下载所给组件并保存。位置可以自己选择,并可尝试给组件取不同名字。2 注册组件方法 1:a、 确定待注册文件的位置b、启动 windows 开始菜单上的”运行”,输入”regsvr32.exe”或者“C:WINDOWSsystem32regsvr32.exe”c、输入待注册的组件的路径和文件名并运行方法 2:a、 确定待注册文件的位置b、启动 windows 开始菜单上的”所有程序|附件| 命令提示符”,输入”regsvr32.exe”或者“C:WINDOWSsystem32regsvr32.exe”c、输入待注册的组件的路径和文件名并运行例如:软件组件技术实验指导书
3、 2C:WINDOWSsystem32regsvr32.exe “C:Documents and SettingsAdmin istrator桌面 第二章 newtestcomserver2 MyCOMServer2.dll“3 查看注册表步骤:a、启动 windows 开始菜单上的”运行” ,或者按开始键+”R”,输入”regedit”,然后按确定b、然后在启动的程序中确定查找组件的范围,如选中根节点c、打开“编辑 ”菜单下查找,在对话框中输入要找的组件名并确定d、查看组件的如下信息 CLSID、ProgID 和 类型库等信息,示例如下:4 组件反注册:a、 确定待注册文件的位置b、启动 w
4、indows 开始菜单上的”运行”,输入”regsvr32.exe”或者“C:WINDOWSsystem32regsvr32.exe u”c、输入待卸载的组件的路径和文件名并运行示例:C:WINDOWSsystem32regsvr32.exe /u “C:Documents and Settings Administrator桌面第二章 newtestcomserver2MyCOMServer2.dll“d、再次进入注册表查看相关信息。5 查看类型库 a、 启动 C+ Builder,选择“文件 | 打开”或者直接按“打开”按钮或者是相应的快捷键b、选择需要打开的组件文件(以 dll 为后缀)
5、 ,弹出如下对话框c、查看属性不同属性页的内容,如“Text ”等d、熟悉不同按钮的作用6 导入类型库a、在 C+ Builder 下,创建新的工程,并选择“工程 | 引入类型库” ,系统弹出如下页所示对话框软件组件技术实验指导书 3b、移动滚动条查看下面文本框的内容及其变化c、加入新的组件,单击 ”添加”按钮,在弹出的对话框中选择打开要添加的组件文件d、分别单击”Install” 按钮和”Create Unit”,查看生成文件的变化,以区分它们的功能。7 组件操作a、 在 C+ Builder 下,创建新的工程,选择 “文件| 新建” ,在弹出的对话框中 new 属性页下选择”Applica
6、tion” ,单击”确定”按钮b、 创建新的窗体,选择“文件|新建” ,在弹出的对话框中 new 属性页下选择”Form”,单击”确定”按钮c、 在 Form 上添加按钮,选中窗体后,双击或拖动 Standard 面板上的“按钮”图标d、 双击按钮复制如下代码到函数内,并进行相应的更改,结果与一下类似:/-#include #pragma hdrstop#include “Unit1.h“#include “beepPro_OCX.h“/-#pragma package(smart_init)#pragma resource “*.dfm“TForm1 *Form1;const IID IID
7、_IBeepObj =0xDB6A2409,0x1F5D,0x45A2,0xB4,0x9E,0xCA,0x92,0xE4,0xD0,0x59,0x71;const CLSID CLSID_BeepObj =按钮图标软件组件技术实验指导书 40xD50CCF87,0xFF38,0x4C20,0x9B,0x61,0x5E,0x5E,0x9D,0x5B,0x32,0x8C;/-_fastcall TForm1:TForm1(TComponent* Owner): TForm(Owner)/-void _fastcall TForm1:Button1Click(TObject *Sender)/ GU
8、IDS defined in the serverHRESULT hr; / COM error codeIbeepServer *IBeep; / pointer to interfacehr = CoInitialize(0); / initialize COM Four Steps to Client Connectivity if (SUCCEEDED(hr) / macro to check for successhr = CoCreateInstance(CLSID_BeepObj, / COM class idNULL, / outer unknownCLSCTX_INPROC_SERVER, / server INFOIID_IBeepObj, / interface id(void*) / pointer to interfaceif (SUCCEEDED(hr)hr = IBeep-beepMeth(800); / call the methodhr = IBeep-Release(); / release interfaceCoUninitialize(); / close COM