社区
ATL
帖子详情
请教Com高手,如何将现有的程序方便地改造成com程序(谢绝灌水)
zhaowuqing
2003-03-26 11:05:10
我做了一个CTI语音卡控制的程序,因为系统要改造成B/S模式,项目经理非要把语音控制做成COM(其实完全没必要),我想请教高手如何将一个现有的exe程序很容易地改造成com,并谈一下数据共享问题,如果真心赐教,分可以再加,先谢过了
...全文
39
9
打赏
收藏
请教Com高手,如何将现有的程序方便地改造成com程序(谢绝灌水)
我做了一个CTI语音卡控制的程序,因为系统要改造成B/S模式,项目经理非要把语音控制做成COM(其实完全没必要),我想请教高手如何将一个现有的exe程序很容易地改造成com,并谈一下数据共享问题,如果真心赐教,分可以再加,先谢过了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhaowuqing
2003-03-28
打赏
举报
回复
看来高手够们不屑这个问题,晚上结账:(
zhaowuqing
2003-03-27
打赏
举报
回复
还有高手指教么?好的思路也可以,很快结账
icansaymyabc
2003-03-26
打赏
举报
回复
COM 和 EXE 的结构大不一样。
重写是最佳改造方案,信不信由你。
serverclient
2003-03-26
打赏
举报
回复
给出个共享内存映射文件的创建代码:
它是我在上个项目中曾经用过的代码。。。
void CReadDataDoc::AllocMemBuffer()
{
OFSTRUCT of ;
// create a common disk file
memBuf.fileHandle = OpenFile(memBuf.filePathName ,
&of,
OF_CREATE | OF_READWRITE | OF_SHARE_DENY_WRITE) ;
// check whether the file is valible
if(memBuf.fileHandle == (HFILE)-1)
{
CString MsgBuf ;
MsgBuf.Format("Create memory mapping failed !") ;
MessageBox(AfxGetMainWnd()->m_hWnd,
MsgBuf,
"Memory Map Failed",
MB_OK) ;
AfxGetMainWnd()->CloseWindow () ;
}
// create memory map related to disk file
memBuf.memMapHandle = CreateFileMapping(
(HANDLE)memBuf.fileHandle,
NULL,
PAGE_READWRITE,
0,memBuf.maxBufSize,
"CG_MEMBUF") ;
// create the view object to return a file pointer
memBuf.lpDataHead = MapViewOfFile(
memBuf.memMapHandle,
FILE_MAP_READ | FILE_MAP_WRITE,
0,0,
memBuf.maxBufSize);
memset(memBuf.lpDataHead,0,memBuf.maxBufSize) ;
}
void CReadDataDoc::FreeMemBuffer()
{
if(memBuf.fileHandle != (HFILE) -1)
{
CloseHandle((HANDLE)memBuf.fileHandle ) ;
CloseHandle(memBuf.memMapHandle) ;
}
memBuf.fileHandle = (HFILE)-1 ;
}
serverclient
2003-03-26
打赏
举报
回复
我不是什么高手,COM也是正在研究中,个人认为可以将你的语音模块做成DCOM的形式,既然有了现成的EXE,就可以做成进程间COM了,注意要导出相应的Interface。
至于数据共享问题,我私下认为是进程间数据共享问题,可以通过开辟内存映射共享文件或者利用Socket本地机通信,或者就利用COM中的RPC协议和代理来通信也可以。。。
flywolfman
2003-03-26
打赏
举报
回复
COM的进程外组件本身就是一个exe文件。不同的是进程外组件必须实现自注册并对外输出一组接口。然后利用MIDL生成的代码做一个代理/存根动态库以便客户与组件能正常通讯。
但是这样生成的标准代理/存根动态库有很多缺点,其中之一就是当客户与组件不在一台计算机上时没有任何方法可以知道网络连接是否正常,当网络恢复后也无法自动恢复!如果想这样做必须自己实现代理/存根动态库。可没人知道如何自己做代理/存根动态库(至少我不知道有谁会做!:()
所以....
还是想办法说服你的经理不要这样做吧!
jeffchen
2003-03-26
打赏
举报
回复
通过MFC实现一个COM接口,如ICallControl。具体看看《COM原理与本质》中有关章节。
Gladstone
2003-03-26
打赏
举报
回复
gz
zhaowuqing
2003-03-26
打赏
举报
回复
重写太麻烦了,本来就不太想改,因为socket通信足以完成需求:(
一个牛人提供的GIS源码(很好)
以后的联系通过E-Mail联系,
谢绝
一切的及时通讯工具,请尽量不要添加我为好友,包括QQ/MSN/Gtalk,如果您发的Mail足够的诚恳并且也足够的值得聊天的理由,那么我会添加你的。不希望通过聊天的方式来解决问题,聊了...
js年月控件(无日)
声明: 原创作品,欢迎转载,但请保留出处 http://hi.baidu.
com
/kv2004 网上大多数的js日历控件都是年-...广告一下我的QQ群,
谢绝
只加群不说话的人加入。 WEB前端群:73269871 LAMP群:34513293 Java Paradise群:81556987
Android愤怒的小鸟源码
高仿愤怒的小鸟源码,可以用来学习游戏的制作,分享学习用,
谢绝
商用
python如何打开
程序
_Python如何运行一个python
程序
方法/步骤1方法一:使用Python,可以直接在这里写入
程序
,但若将其关闭,刚才写的代码就会消失。2此时应新建一个文本文档,写入
程序
,点击“保存”,将文件后缀名改为“py”。3打开解释器,点击“File”--“Open”,...
python结束任务之后如何关闭_如何终止python
程序
运行
python是解释运行的
程序
,
程序
进入死循环或者其它异常都会导致
程序
无法正常结束。虽然python
程序
不会像exe
程序
那样是系统进入难以恢复的异常,但是却会使python解释器不能继续往下工作,尤其是采用命令行模式时。...
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章