DCOM(100分)

  • 主题发起人 主题发起人 chengjian
  • 开始时间 开始时间
C

chengjian

Unregistered / Unconfirmed
GUEST, unregistred user!
我的一个同事用VC写了一个DCOM,
我先在DCOMCNFG中配为'192.168.10.45' 上使用。
在DELPHI中如何调用?
是不是先导入类型库,定义一个类,然后使用用?如下:
var
MyInterface:TBankServer;
MyKey:WideString;
LResult:integer;
begin
try
MyInterface:= TBankServer.CoBankServer.CreateRemote('192.168.10.45');
LResult := MyInterface.SignIn(trim(Edit_SelfIP.Text),Trim(Edit_Code.Text),MyKey);
if LResult = 0 then
begin
Edit_Key.Text := MyKey;
MessageBox(Handle,'签到成功!','系统提示',mb_ok);
end else
begin
MessageBox(Handle,'签到失败!','系统提示',mb_ok);
end ;
except
MessageBox(Handle,'COM创建失败!','系统提示',mb_ok);
end;
调试时,创建没有报错,在调用方法时报错。
系统报‘类没有注册’。不知为什么。
请高手指教!
 
没有高手说话?
谢谢你们了!
 
TBankServer必须在运行的机器上注册
 
导入类型库后,生成的XXX_TLB.pas文件中有CoXXX的类,然后使用
CoXXXXX.CreateRemote(计算机名)--IP我未试过,这样就获得一个接口了。
由于是使用CreateRemote,所以"类没有注册"有可能是远程计算机返回的结果,或者
是由于其它原因,在本地计算机上试图建立COM对象了。
 
是这样的:
MyInterface:= CreateRemoteComObject('192.168.10.45',CLASS_BankServer) as IBankServer;
在本地运行没有问题(即IP为自己时)。
在异地运行(即IP为其他机器时),报访问拒绝。
我想可能是DCOM 的配置问题,有没有同志有这方面的经验?

 
你把那个DCOM导入到组件管理器中,然后导出,这样就生成了一个COM+的安装包。
如果A要访问B(此时A,B均以安装你的DCOM)
在A中导入DCOM的 DCOM_TLB.pas(相当于导入了ACTIVEX控件)在RemoteMachineName中写入
B的IP地址,还有就是在B中的组件管理器中设定好访问权限,这样应该就可以用啦/
 
服务器上:DCOMCNFG->默认属性->默认身份验证级别->"无"
->默认安全机制->访问权限->EveryOne
找到那个COM服务器->身份标识->交互用户 ***
->启动用户**
***你手工起动服务器后,就可以在另一台机上访问了
**需要有"启动权限",而且不一定看得到介面,但在任务管理器中看得到
 
没有人有好的建议?
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部