本人现在遇到如下问题,迫切需要解决,希望高人指教!环境(局域网中,服务器(2000系统,安装SQL-SERVER数据库),本机)
本人编写了一个DLL和一个EXE文件
当在本机上操作时
只需在EXE的程序中加入代码
Dim objServer As Object
Set objServer = CreateObject("DLL文件名.类模块名")
然后通过 objServer.函数名(各项参数)
即可调用DLL文件中的函数,完成功能
现在我需要在局域网中实现,当把DLL文件放到服务器的机器上后,
我需要怎么编写代码,才能使我的客户端EXE文件中调用到服务器端DLL文件中的函数急 急 急 希望大侠们帮帮小弟我解决以上的问题啊
本人编写了一个DLL和一个EXE文件
当在本机上操作时
只需在EXE的程序中加入代码
Dim objServer As Object
Set objServer = CreateObject("DLL文件名.类模块名")
然后通过 objServer.函数名(各项参数)
即可调用DLL文件中的函数,完成功能
现在我需要在局域网中实现,当把DLL文件放到服务器的机器上后,
我需要怎么编写代码,才能使我的客户端EXE文件中调用到服务器端DLL文件中的函数急 急 急 希望大侠们帮帮小弟我解决以上的问题啊
Set objServer = CreateObject("DLL文件名.类模块名","服务器名称orIP")当然前提是DLL在服务器上注册,再配置成DCOM。使用DCOM,特别需要保护客户端,有些错误是你无法避免的
比如错误429
http://community.csdn.net/Expert/topic/4681/4681411.xml?temp=.234646
1) 将DCOM拷贝到指定目录
2) 执行DCOM文件.EXE/REGSERVER
3) 执行DCOMCNFG,点开该DCOM的条目,选中安全性TAB表项
->点中使用自定义访问权限,再按编辑按钮->添加Everyone All Access->确定
->点中使用自定义启动权限,再按编辑按钮->添加Everyone All Launch->确定
->确定该DCOM条目
4) 选中标识TAB表项,需要指定启动用户或需要使用交互式用户
*指定交互式用户后,在WINDOWS XP+WINDOWS 2000 SERVER下通过DCOM测试
此步骤必须用到一个DCOM在DCOMCNFG中显示出的所有条目
5)在客户端注册DCOM的VBR文件A.DLL注册,应该是REGSVR32 *.DLL
B.权限问题自己考虑,建议测试使用EVERYONE
C.DLL的VBR文件在VB编译器中选择DCOM
D.喜欢你死了,自己去摸索吧
DLL文件是不是必须要放在system32下进行注册
如何将DLL文件配置成DCOM
如果计算机名字是NAME,局域网内的IP地址是192.168.1.1
那么具体调用时怎么写
谢谢 指教
在编译DLL的时候,菜单->工程->工程属性->组件->选中Remote Server Files,编译后就会有VBR文件。Dim objServer As Object
Set objServer = CreateObject("DLL文件名.类模块名","NAME")OR Dim objServer As Object
Set objServer = CreateObject("DLL文件名.类模块名","192.168.1.1")
如果是COM+,就要到控制面板里去设置了,也简单的。
现在
C.DLL的VBR文件在VB编译器中选择DCOM
这步怎么操作才可以得到 DCOM 阿
我不会
真是知道的太少了
要好好像你学习了 大哥
大哥,还在不在阿,希望看到后,继续帮我解决一下阿
谢谢
--------------------------------
不至于吧,DLL不是更好,相比之下COM+比DCOM不管是从资源的调配上面还是性能上面,还是安全方面都要强.
2.注册目标DLL regsvr32 COMPLUS.DLL3.运行DCOMCNFG
4.展开组件服务->计算机->我的电脑->COM+应用程序
5.新建->应用程序,创建一个空应用程序,并起一个名字,比如TEST
6.展开TEST,在组件上新建->组件
7.导入已注册的组件,我选择:COMPLUS.CLASS1
服务器已经设置完成.其他忽略的部分使用默认选项
在客户机上找到CLIREG32.EXE,可以复制到COMPLUS.VBR的同一个目录,这个目录还需要TLB文件.
执行CLIREG32.EXE COMPLUS.VBR
选中DCOM,
输入COM+所在的地址
客户机注册完成客户端程序如下:
Dim oClass As Object
Set oClass = CreateObject("COMPLUS.CLASS1", "192.168.1.100")
MsgBox oClass.HelloWorld
Set oClass = Nothing也可以省略CreateObejct的第二个参数.
可不可以尽量简单化一点阿
我很菜的 那么高深的内容 我看不太懂
我要实现的环境 没那么夸张
我当前只要满足 在一个局域网内
大概也就十几二十来个用户 通过客户端的操作 需要访问到服务器上DLL文件,然后通过客户端传输的参数 调用DLL里面函数 来得到结果 返回到客户端上
现在大致是这样
请两位大侠帮我解决一下吧
http://community.csdn.net/Expert/topic/4681/4681397.xml?temp=.4033625
对了 那个RDS 是什么东西
是不是需要引用什么后 才会出来啊???
我用的是2000 SERVER的机器
那里的配置方法好像跟你2003里面说的不一样
你可不可以再拿2000 SERVER里面的方法来说明一下阿
呵呵
谢谢了
在win2000下,他所说的dcomcnfg应该改为:
%windir%\system32\Com\comexp.msc不过很明显楼主没看我上面给出链接的这一贴,那上面使用的是我提供的另外一组控件,实现起来简单很多。
%windir%\..\Program Files\Common Files\System\msadc\msadco.dll这里的windir就是你的操作系统目录,如 c:\winnt
---
相关DCOM的访问偶只有一套Delphi移植过来的基于Socket的解决方案,使用的是Borland Socket Server来做COM代理,不过原生版SocketServer只支持Delphi和CBuilder生成的COM组件.主要有两个组件,一项是服务器服务组件,是一个exe文件,支持以windows服务模式启动,此服务必须启动才能进行服务,默认端口为211,这个很有可能会被防火墙阻隔掉.
另一个则是一个客户端的代理DLL,名称叫做EasyDCOMObject.dll,使用方法也很简单,一种是将该DLL在客户端进行注册,然后添加到程序的reference当中,用如下代码即可以使用dim oEasyDCOMObject as new EasyDCOMObject.EasyDCOMObject
dim oServerObject as Objectset oServerObject=oEasyDCOMObject.GetObj("ServerObject.Class",IP)
call oServerObject.Method([Parameters])
set oServerObject=nothing另一种则是不添加到Reference当中去的方法
dim oEasyDCOMObject as Object
dim oServerObject as Object
set oEasyDCOMObject=CreateObject("EasyDCOMObject.EasyDCOMObject")
set oServerObject=oEasyDCOMObject.GetObj("ServerObject.Class",IP)
call oServerObject.Method([Parameters])
set oServerObject=nothing
set oEasyDCOMObject=nothing相关文件可以到下面的地址下载:
http://iemis.vicp.net/RemoteCOMAccessAgent.zipBTW:
下载后请先使用杀毒软件进行查毒,若发现病毒或异常可以及时同本人联系.不过EasyDCOMObject的Source可以提供(是Borland C++ Builder 6写的),而SocketServer的修改版本Source已经由于丢失,虽然可以改出来,但是还是有一定的麻烦度,当然也可以自行修改,即可对相关的组件(其中使用的是ProgID)进行审核时,去除对Borland相关信息的判断,从而实现其它开发工作开发的COM的代表.
在2000的系统里面也都已经按照步骤配置好了
可是我在客户端 运行后
在调用时 提示我
实时错误 '429';
ActiveX 部件不能创建对象
是什么原因
可以帮我解决下哇?
可是万一像你说的那个通道被封掉的话 我该通过什么方法去修改实现阿
还有 你可不可以 教我 帮我把刚才的这个
(在2000的系统里面也都已经按照步骤配置好了
可是我在客户端 运行后
在调用时 提示我
实时错误 '429';
ActiveX 部件不能创建对象
是什么原因
可以帮我解决下哇?)
问题解决一下阿
多学种方法 我想可以多一份保障阿 呵呵
万一到时候 正式开始调试了 出来就完蛋了 呵呵
谢谢
执行CLIREG32.EXE COMPLUS.VBR
选中DCOM,
输入COM+所在的地址
客户机注册完成以上步骤怎么操作阿
我找到了CLIREG32.EXE文件 但是跟编译出来的VBR文件放到一起后 双击运行后我也看到提示了 但是具体那些设置 如上面说的
选中DCOM,
输入COM+所在的地址
具体怎么操作 我没找到在哪里可以选择什么的
请大哥们指教阿
显示提示
请在命令行指定一个 .VBR 文件
然后只有一个确定按钮 按完后出来一个界面
上面写了
用法:CLIREG32<VBRFile>[选项]
有效选项为:
..........
噢 是不是 就是像注册文件一样 要在运行里面弄的阿
输入COM+所在的地址
客户机注册完成
-> 执行CLIREG32.EXE COMPLUS.VBR <-
这句 具体怎么执行阿 呵呵
我就是到这里弄不下去了
拜托 通俗点说明一下吧 大哥
因为我放到运行里面也试过了不行
然后直接双击 也不行
所以我不知道 怎么样操作这一步 呵呵
-> 执行CLIREG32.EXE COMPLUS.VBR <-
大哥 帮忙啊
那你进入D:\XXX后
输入CLIREG32.EXE COMPLUS.VBR 回车以后的注册可以写在VB程序中。
可是万一像你说的那个通道被封掉的话 我该通过什么方法去修改实现阿
----------------
EasyDCOMObject支持端口设置以及访问类型设置,只不过设置是使用Socket方式,其实还支持Web方式和DCOM方式。
oEasyDCOMObject.InvokeType=eoiSocketInvoke 'Socket访问方式
oEasyDCOMObject.Port=211 '默认端口这些都是可以设置的当然使用
eoiDCOMInvoke
时与直接使用CreateObject没什么区别
eoiwebISAPIInvoke
是使用的Web访问模式,该访问方式需要另一个Borland开发的另一个ISAPI组件支持,并且这个大部分反应说是不太稳定,所以这就不给出来了。使用它还不如直接使用RDS,并且RDS相对控制上又多了一级访问授权(注册表项)
但是你教的那种不行啊 我运行后 报给我
实时错误 '429'
ActiveX 部件不能创建对象
哎 还在郁闷中呢