COM服务器

COM服务器服务器是什么,dns辅服务器未响应,我的世界服务器地址,我的世界手机版服务器,服务器租用,云服务器,服务器系统
社会化媒体营销 > COM服务器

COM服务器

使用ATL编写一个简单的COM服务器/赵湘宁

   本文的对象是COM编程初学者,其目的旨在描述如何用ATL创建COM服务器,以及如何在VCVB编写的客户端应用程序中调用COM服务器。为了不给初学者增加负担,本文不打算深入讨论COMIDL的细节,而是展示用ATL创建简单的COM对象所需要的步骤。希望通过这篇文章能刺激你学习COM编程的欲望。第一步:运行ATL COM向导(参见图一)   你要做的第一件事情是启动VC创建一个新的工程。选择“ATL COM AppWizard”。注意这个向导创建的工程并没有包含任何初始的COM对象,在完成这个向导之后,要从“ClassView”中用“New ATL Object”命令来指定你想要增加到这个工程中的对象类型。“Project name”编辑框中为工程取个名字:“Simple_ATL”。在“Location”编辑框中指定工程的存放位置,如“E:\samples\Simple_ATL”,然后单击OK按钮。

(图一)

你会看到一个选择屏幕(图二)。

(图二)

第一部分单选按钮选项是要创建的服务器类型“Server Type”。因为我们要创建一个进程内服务器(Server DLL),所以应该选择的类型是动态链接库“Dynamic Link Library——DLL”,注意所有进程内服务器都是DLL。下面是三个复选框不用去管它,它和我们创建的这个工程没关系。单击“Finish”按钮。向导将自动产生相应的文件。然后出现“New Project Information”窗口告诉你向导将要创建一些什么文件(图三)。确认后单击OK按钮。

(图三)

第二步:创建新的ATL对象   确定在VCIDE环境中见到“Workspace View”。也就是工作间视图。你也可以进入“View”菜单,然后选择“Workspace”。这个视图中由三个标签,单击“ClassView”标签。你会看到其中的“Simple_ATL Classes”。选中后单击右键并从弹出菜单中选择“New ATL Object”。你会见到如下窗口:(图四)

(图四)

我们就用缺省选择(Simple Object),也就是简单对象。单击“Next”按钮进入“ATL Object Wizard Properties”,也就是ATL对象向导的属性对话框(图五)。

(图五)

“Short Name”文本编辑框中输入“First_ATL”。注意向导会自动填写其余的文本编辑框。单击“Attributes”标签。其中有几组单选按钮选项和几个复选框。第一组单选按钮是线程模型“Threading Model”,我们取缺省值“Apartment Model”。第二组单选按钮是接口“Interface”,单击“Dual”,也就是双接口。最后,第三组单选按钮是聚合“Aggregation”,因为我们不想涉及接口的聚合,所以在此选择“No”。至于底下的三个复选框,我们不用管它,单击OK按钮让向导创建新的“ATL Simple Object”第三步:添加方法   如果你单击工作间的“ClassView”标签,你会注意到向导在里面添加了一些内容。添加一个方法很容易,(图六)选中“IFirst_ATL”后单击右键并选择“Add Method”

(图六)

单击“Add Method”后,你会看到“Add Method to Interface”对话框(图七)。

(图七)

“Return Type”编辑框中(已成灰色)这个方法的返回值已经缺省为 “HRESULT”。大多数情况下都应该是这个值类型。下一个编辑框是方法名“Method Name”,输入方法名“AddNumbers”。最后一个编辑框是要你输入希望使用的参数“Parameters”。由于我们打算将两个数字相加,然后返回相加结果,所以要使用三个参数。最后一个参数是一个指针。现在你不用去关心繁杂的接口定义语言IDL,只要在这个参数编辑框中输入如下内容:[in] long Num1, [in] long Num2, [out] long *ReturnVal它的意思是声明两个long类型输入[in]参数和一个指针返回值[out](刚开始可能会不习惯这样怪怪的写法,但等你阅读了一两本关于COM的书之后,会慢慢接收它的)。单击OK按钮。展开所有“ClassView”的节点“+”号。从这个视图可以清楚地了解Simple_ATL各个类之间的层次关系。双击最上面“IFirst_ATL”(接口)节点下的“AddNumbers”(方法)节点,右边屏幕将会显示这个方法的实现代码。添加如下的代码:STDMETHODIMP CFirst_ATL::AddNumbers(long Num1, long Num2, long *ReturnVal){// TODO: Add your implementation code here*ReturnVal = Num1 + Num2;return S_OK;第四步:编译这个DLL   不管你想不相信,到目前为止,我们用ATL所创建的COM服务器已经完全能运行!当然,还需要编译它才行。按下“F7”功能键,几秒钟之后,VC++便会完成编译并注册你所创建的DLL服务器。这样其它的应用程序就可以使用这个COM服务器了。试一试吧!第五步:用VB测试这个服务器   为了用VB来测试COM服务器,首先你必须安装VB的开发环境。(如果你没有安装VB或不想用VB测试,可以跳过这一步到下一步:用VC++测试COM服务器。)首先启动VB,选择创建标准EXE“Standard EXE”工程。在对话框中放一个按钮。然后我们要引用COM服务器。单击“Project”菜单并选择“References”。然后下翻页直到可以看见“Simple ATL 1.0 Type Library”(如图八),然后选中它。

(图八)

单击OK按钮。现在双击前面在对话框中创建的命令按钮,VB将会带你到这个按钮的代码窗口。然后添加以下代码:Private Sub Command1_Click()Dim objTestATL As SIMPLE_ATLLib.First_ATLSet objTestATL = New First_ATLDim lngReturnValue As LongobjTestATL.AddNumbers 5, 7, lngReturnValueMsgBox "The value of 5 + 7 is: " & lngReturnValueSet objTestATL = NothingEnd Sub如果你是个VB程序员,这对你来说简直太容易了。声明变量和对象,调用COM服务器的“AddNumbers”方法,然后显示结果。按下“F5”功能键运行这个VB工程,单击对话框中的命令按钮,你会看到输出的结果。(如图九)

(图九)

下面再让我们用VC++测试这个COM服务器。第六步:用VC测试这个服务器   保存并关闭Simple_ATL工程,然后创建一个新的Win32 控制台应用程序。选择“Win32 Console Application”并取名为“Test_ATL”。单击OK按钮并接受对话框中的缺省设置(空的工程)。单击“Finish”按钮,然后再按OK按钮。这样就创建好了一个空的工程。按下“Control+N”键向工程中添加一个文件。从弹出的窗口中选择“C++ Source File”并为它取名为“Test_ATL.cpp”。按下OK按钮。这样工程中就有了一个空的.CPP文件。我们要在这个文件中添加一些测试COM服务器的代码:// 将头文件的目录指到Simple_ATL工程所在的目录#include "..\Simple_ATL\Simple_ATL.h"#include // Simple_ATL 工程所在目录的Simple_ATL_i.c 文件中拷贝以下内容// 注意: 你也可以不拷贝这些东西,而是把文件Simple_ATL_i.c包含进来。// 我之所以将它拷进来,是想更清楚地展示这些敞亮来自什么地方一击它们的代码const IID IID_IFirst_ATL = {0xC8F6E230,0x2672,0x11D3,{0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};const CLSID CLSID_First_ATL = {0x970599E0,0x2673,0x11D3,{0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};void main(void){// 声明HRESULTSimple_ATL接口指针HRESULT hr;IFirst_ATL *IFirstATL = NULL;// 初始化COMhr = CoInitialize(0);// 使用SUCCEEDED 宏并检查我们是否能得到一个接口指针 if(SUCCEEDED(hr)){hr = CoCreateInstance( CLSID_First_ATL, NULL, CLSCTX_INPROC_SERVER,IID_IFirst_ATL, (void**) &IFirstATL);// 如果成功,则调用AddNumbers方法,否则显示相应的出错信息if(SUCCEEDED(hr)){long ReturnValue;IFirstATL->AddNumbers(5, 7, &ReturnValue);cout << "The answer for 5 + 7 is: " << ReturnValue << endl;IFirstATL->Release(); }else{cout << "CoCreateInstance Failed." << endl;}}// 释放COMCoUninitialize();}第七步:编译并运行测试程序   按下“F5”功能键,编译测试程序,然后按“Control+F5”功能组合键运行测试程序。在DOS窗口中,你应该能看到输出的结果。

点击显示全文

  • 根服务器和COM服务器的配置

    根服务器的配置 新建根区域 新建主机记录 comhost 在根服务器上建立对 com 的委派 : Com 服务器的配置: 新建 COM 区域: 建立两条主机记录: 建立对 ambow....

    贡献者:幸福流浪的狼
    104299
  • 常用的邮箱服务器《SMTP、POP3》地址、端口

    常用的邮箱服务器《SMTP、POP3》地址、端口_计算机硬件及网络_IT/计算机_专业资料。常用的邮箱服务器《SMTP、POP3》地址、端口 sina.com: POP3 服务器地址:pop3.sina...

    贡献者:天龙物理
    119505
  • 服务器系统建设方案

    在此列举Domail作为邮件服务器系统建设方案。 4.1 网络架构图 - 10 - 北京芯锐自动化技术有限公司 www.bjchiprui.com 说明:邮件服务器采用两台负载均衡集群模式...

    贡献者:北京芯锐公司
    526630
  • COM服务器

    使用ATL 编写一个简单的 COM 服务器文 /赵 湘宁本文的对象是 COM 编程初学者,其目的旨在描述如何用 ATL 创建 COM 服务器 ,以及如何在 VC 或 VB 编写的客户...

    贡献者:MarkGorden
    143768
  • 我的世界怎么开服务器?我的世界开服务器攻略_图文

    风林购教你赚钱 fenglingou.com 我的世界怎么开服务器?我的世界开服务器攻略 服务器是大家都想的,大家十分想开个服务器,可是又不会开,这该怎么办 呢?今天我...

    贡献者:红色的天堂5
    635340
  • 区域服务器的工作原理

    区域服务器的工作原理_计算机硬件及网络_IT/计算机_专业资料。根服务器知道可处理几百个顶级域的名称服务器的IP地址。它可以为您的名称服务器返回COM域名的名称服务...

    贡献者:咕噜月月
    450698
  • 设置AGPS服务器的地址

    修改方案可以在 GPS 设置中设置 AGPS 服务器的地址,已经找到的服务 器地址如下,可以实际测试一下,看看哪个能用,哪个更快。 sls1.sirf.com:7275 suplcn.sirf....

    贡献者:sddg2011
    122128
  • 搭建所有服务器全教程

    服务《IIS》管理器,在 WEB 站点下创建新 的 WEB 站点.在站点创建向导的 IP 地址和端口设置对话框中输入需要绑定的完整域名,如 www.test.com,test1.test.com,...

    贡献者:xiaowen716
    375607
加载中...
加载中...
  • xpath详细使用介绍

    xpath详细使用介绍_计算机软件及应用_IT/计算机_专业资料。xpath详细使用介绍如果要告诉别人买一加仑牛奶,您会怎么说?“请去买一加仑牛奶回来” 还是 “从前门出去,...

  • XPath实例教程

    XPath 实例教程一、基本的 XPath 语法 实例教程一、基本的 XPath 语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝...

  • 八爪鱼如何通过xpath实现自定义定位元素

    八爪鱼如何通过xpath实现自定义定位元素_互联网_IT/计算机_专业资料。本文介绍八爪鱼如何通过xpath实现自定义定位元素。八爪鱼·云采集服务平台 www.bazhuayu.com 八爪...

  • C操作xml之xpath语法

    C操作xml之xpath语法_计算机软件及应用_IT/计算机_专业资料。以前也发过关于.net 中操作 XML 的帖子,但不是很详细,现在我将详细介绍一下 c#如何操 作 xml ...

  • xpath详解总结,很全面

    请看一个典型的 XPath 查询表达式:/messages/message//child:: node《》[@id=0],其中/messages/message 是路径《绝对路径以"/ "开始》,child::是轴表示在子节点...

24小时热门信息
  • Docker常用命令汇总

    Docker常用命令汇总_计算机软件及应用_IT/计算机_专业资料。超实用:Docker常用命令汇总 Docker 常用命令汇总一、查看 docker 信息 1、查看 docker 版本 docker version...

    贡献者:zq_rh
    155626
  • docker云架构

    docker云架构_计算机软件及应用_IT/计算机_专业资料。docker,云架构,分布式集群 Docker:一种云计算下的新的虚拟化技术解决方案 Abstract: 云计算是如今互联网的前沿...

    贡献者:fangfeiqiang8
    286938
  • docker环境搭建

    docker环境搭建_计算机软件及应用_IT/计算机_专业资料。docker环境安装全文 Docker 是 PasS 提供商 DoctCloud 开源的一个基于 LXC 的高级容 器引擎,源代码托管在 ...

    贡献者:张小飞705
    767694
  • docker命令语句

    docker命令语句_计算机软件及应用_IT/计算机_专业资料。docker命令语句 Docker 基础这篇基础文章是方便用户在使用 cSphere 平台之前,了解 docker 基础知识。 针对已经...

    贡献者:尐凍
    238868
  • Docker 学习笔记

    //github.com/yeasy/docker_practice/raw/master/_local/.bashrc_do cker; echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; ...

    贡献者:luziq
    245042
  • docker私有库Docker Registry设置

    7 8 Removing intermediate container9f5f5068c3f3 9 Step4:COPY docker-registry-v2.conf/etc/nginx/docker-registry-v2.conf 1 0 --->74acc70fa106 ...

    贡献者:messiah0088
    333678
精彩推荐
  • flash样题flash样题

    一、单选题 1、Flash 软件最突出的两大优势是 ___、___。A A、流式播放、矢量动画 B、流式播放、静态图像处理 C、非流式播放、点阵图像 D、非流式播放...贡献者:0_0柒柒103875

  • Flash 基础入门学习Flash 基础入门学习

    Flash 基础入门学习_计算机软件及应用_IT/计算机_专业资料。FLSAH一些入门技巧学习 Flash 基础 一、界面介绍 启动 Flash 后,Flash 的界面主要有菜单栏、标准工具栏...贡献者:柳上陌絮185200

  • flash教案《课标》_图文flash教案《课标》_图文

    课程名称:计算机动画设计 FLASH 周课时:4 课时/班 任课班级:计算机 1、2 班 授课教师:刘 猛 授课时间:2014——2015 学年度第二学期 六枝特区职业技术学校 ...贡献者:xiaomengge32355536

  • 初中flash教案初中flash教案

    初中flash教案_其它课程_初中教育_教育专区。《Flash 动画制作课程》 教 案 任课教师:李枫 2015 年 3 月 一、指导思想及教学目标 以江泽民总书记“三个代表”...贡献者:suky41165896

  • Macromedia Flash_8 基础教程Macromedia Flash_8 基础教程

    Flash 8.0 基础教程一、Flash 基础 启动 Flash 在桌面找一个红色图标 双击即可启动,也可以单击“开始” -“所有程序”,在程序菜单中找到 Flash 或者 Macromedia ...贡献者:liusheng61168241

  • flashflash

    flash_计算机软件及应用_IT/计算机_专业资料。u8 FLASH_WriteNByte《u32 addr, u8 *dat_buf, u8 no》 《 FLASH_Unlock《》;//Unlock the Flash while《1》 《 ...贡献者:宁仔365294953

  • Adobe Flash Player 11.7官方正式版下载Adobe Flash Player 11.7官方正式版下载

    Adobe Flash Player 11.7 官方正式版下载 Flash Player 11.7 系列除了完善了安全性、稳定性和性能、设备兼容性,此次 新版本并没有带来功能上的重大变化,主要是...贡献者:cnbeta_mu666502

  • Flash入门教程Flash入门教程

    Flash入门教程_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档Flash入门教程_计算机软件及应用_IT/计算机_专业资料。Flash AS 入门教程本...贡献者:大葵仔166160

手机版 | 欢迎来到社会化媒体营销
RSS订阅