COM+问题 用VB创建的COM+组件,在客户端安装,客户端程序调用后,没有返回值,通过在客户端的组件管理器观察,组件没有响应动作,组件调用方式,采用CREATEOBJECT方法和引用方法都试过,都不成功,请问哪位大侠遇到了这样的问题,有好的建议! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是打包成*.msi文件安装吗?调用能不能成功??最好能详细,或者贴出代码! To:online(龙卷风(学习.NET中...))谢谢你的关注,我是初次调用,不知道究竟如何操作,所以就使用如一般*.dll文件的使用方式,也使用了CREATEOBJECT("???.????")的方法,但都没有成,能不能给我一个例子作为参考,不胜感激,测试成功立即揭贴,谢谢! To:online(龙卷风(学习.NET中...))我的确是打包成*.msi文件安装的 来个简单的例子吧~!算整数加法!(例子中间没有包含数据有效性的控制,测试时不要输入非整型数据)新建ACTIVE DLL工程,工程名COM_Test,类名clsAdd,类中粘贴代码:Option ExplicitPublic x, y As IntegerPublic Function myAdd() As IntegermyAdd = x + yEnd Function编译得到COM_Test.dll,下面开始注册组件开始-设置-控制面板-组件服务,找到COM+应用程序,右键新建 应用程序,创建一个空应用程序,就叫myadd吧,然后右键新建组建,导入刚才生成的COM_Test.dll,成功以后点击myadd应用程序,将其导出,注意类型选代理,就会生成myadd.msi和myadd.msi.cab两个文件下面做一个测试程序.新建标准EXE工程,引用COM_TEST(就是刚才做的组件),窗体如下:VERSION 5.00Begin VB.Form Form1 Caption = "Form1" ClientHeight = 3405 ClientLeft = 60 ClientTop = 345 ClientWidth = 5100 LinkTopic = "Form1" ScaleHeight = 3405 ScaleWidth = 5100 StartUpPosition = 3 '窗口缺省 Begin VB.CommandButton Command2 Caption = "Quit" Height = 495 Left = 3600 TabIndex = 7 Top = 2520 Width = 1215 End Begin VB.CommandButton Command1 Caption = "Add" Height = 495 Left = 3600 TabIndex = 6 Top = 1800 Width = 1215 End Begin VB.TextBox Text3 Height = 375 Left = 1920 TabIndex = 4 Top = 1920 Width = 1215 End Begin VB.TextBox Text2 Height = 375 Left = 1920 TabIndex = 3 Top = 1200 Width = 1215 End Begin VB.TextBox Text1 Height = 375 Left = 1920 TabIndex = 2 Top = 480 Width = 1215 End Begin VB.Label Label3 AutoSize = -1 'True Caption = "Result:" BeginProperty Font Name = "宋体" Size = 15.75 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 315 Left = 360 TabIndex = 5 Top = 1920 Width = 1155 End Begin VB.Label Label2 AutoSize = -1 'True Caption = "Y:" BeginProperty Font Name = "宋体" Size = 15.75 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 315 Left = 480 TabIndex = 1 Top = 1200 Width = 330 End Begin VB.Label Label1 AutoSize = -1 'True Caption = "X:" BeginProperty Font Name = "宋体" Size = 15.75 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 315 Left = 480 TabIndex = 0 Top = 480 Width = 330 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalseOption ExplicitDim myAdd As New clsAddPrivate Sub Command1_Click()With myAdd .x = Val(Text1.Text) .y = Val(Text2.Text) Text3.Text = .myAddEnd WithEnd SubPrivate Sub Command2_Click()Set myAdd = NothingEndEnd SubPrivate Sub Form_Load()Set myAdd = New clsAddEnd Sub然后编译生成COM_CLIENT.EXE,将这个文件和刚才导出的两个文件复制到客户机上(WIN2000),在客户机上安装myadd.msi,再运行COM_CLIENT.EXE试试!注意在客户机登录的用户要有安装和访问服务器组件的权限! 补充一点:COM+是配置型组件,部署过程中要做不少配置和设置,包括权限,如果是在域中测试就很方便,否则要配置相应权限,要不然就会有权限错误等问题!~ to:billyqiao(如冰) 不知你解决了问题没有,这几天我也在研究COM+,有个问题一直在困扰着我,就是权限配置。我的客户端和服务器端都是WIN2000,只有当他们的User和PassWord一样时才能远程创建对象,否则提示为“运行时错误70,拒绝的权限”。这个该怎么办?并请求各位高手可以指点迷津。 楼上的。将客户端的(MS DTC)默认身份验证级改为“无”就可以解决这个问题。不过我没有想通为什么改的是客户端的身份验证而不是服务器端的。 to titan1975(泰坦) :老兄,你在误导,哪有这么简单。首先,ACTIVE DLL工程必须设置为“远程服务器文件”,其次,在导入组件时队了COM_Test.dll外还要COM_Test.TLB(类型库) 抽奖分布问题 如何设置TOOLBAR为coolbar的包含对象?请各位大虾帮帮手!!!在线等。 vb怎么做帮助文件? 请帮助,"类不支持自动化或不支持期望的接口"?谢谢 为什么会报错? 怎么用vb来作一个简易的像word一样的编辑器? 程序要用的 OCX 能否放在 App.Path 而非系统目录中?是否需要注册?谢谢! datagrid控件的问题!急!!! 一个小问题? 关于access数据库求和的问题:( 如何实现随机数值 请问如何读取端口数据(如串口),如何获得文件将要运行的信息
调用能不能成功??
最好能详细,或者贴出代码!
谢谢你的关注,我是初次调用,不知道究竟如何操作,所以就使用如一般*.dll文件的使用方式,也使用了CREATEOBJECT("???.????")的方法,但都没有成,能不能给我一个例子作为参考,不胜感激,测试成功立即揭贴,谢谢!
我的确是打包成*.msi文件安装的
新建ACTIVE DLL工程,工程名COM_Test,类名clsAdd,类中粘贴代码:
Option Explicit
Public x, y As Integer
Public Function myAdd() As Integer
myAdd = x + y
End Function
编译得到COM_Test.dll,下面开始注册组件
开始-设置-控制面板-组件服务,找到COM+应用程序,右键新建 应用程序,创建一个空应用程序,就叫myadd吧,然后右键新建组建,导入刚才生成的COM_Test.dll,成功以后点击myadd应用程序,将其导出,注意类型选代理,就会生成myadd.msi和myadd.msi.cab两个文件
下面做一个测试程序.新建标准EXE工程,引用COM_TEST(就是刚才做的组件),窗体如下:
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 3405
ClientLeft = 60
ClientTop = 345
ClientWidth = 5100
LinkTopic = "Form1"
ScaleHeight = 3405
ScaleWidth = 5100
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command2
Caption = "Quit"
Height = 495
Left = 3600
TabIndex = 7
Top = 2520
Width = 1215
End
Begin VB.CommandButton Command1
Caption = "Add"
Height = 495
Left = 3600
TabIndex = 6
Top = 1800
Width = 1215
End
Begin VB.TextBox Text3
Height = 375
Left = 1920
TabIndex = 4
Top = 1920
Width = 1215
End
Begin VB.TextBox Text2
Height = 375
Left = 1920
TabIndex = 3
Top = 1200
Width = 1215
End
Begin VB.TextBox Text1
Height = 375
Left = 1920
TabIndex = 2
Top = 480
Width = 1215
End
Begin VB.Label Label3
AutoSize = -1 'True
Caption = "Result:"
BeginProperty Font
Name = "宋体"
Size = 15.75
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 360
TabIndex = 5
Top = 1920
Width = 1155
End
Begin VB.Label Label2
AutoSize = -1 'True
Caption = "Y:"
BeginProperty Font
Name = "宋体"
Size = 15.75
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 480
TabIndex = 1
Top = 1200
Width = 330
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "X:"
BeginProperty Font
Name = "宋体"
Size = 15.75
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 480
TabIndex = 0
Top = 480
Width = 330
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim myAdd As New clsAddPrivate Sub Command1_Click()With myAdd
.x = Val(Text1.Text)
.y = Val(Text2.Text)
Text3.Text = .myAdd
End WithEnd SubPrivate Sub Command2_Click()
Set myAdd = Nothing
End
End SubPrivate Sub Form_Load()
Set myAdd = New clsAdd
End Sub
然后编译生成COM_CLIENT.EXE,将这个文件和刚才导出的两个文件复制到客户机上(WIN2000),
在客户机上安装myadd.msi,再运行COM_CLIENT.EXE试试!
注意在客户机登录的用户要有安装和访问服务器组件的权限!
COM+是配置型组件,部署过程中要做不少配置和设置,包括权限,如果是在域中测试就很方便,否则要配置相应权限,要不然就会有权限错误等问题!~
不知你解决了问题没有,这几天我也在研究COM+,有个问题一直在困扰着我,就是权限配置。我的客户端和服务器端都是WIN2000,只有当他们的User和PassWord一样时才能远程创建对象,否则提示为“运行时错误70,拒绝的权限”。这个该怎么办?
并请求各位高手可以指点迷津。
将客户端的(MS DTC)默认身份验证级改为“无”就可以解决这个问题。不过我没有想通为什么改的是客户端的身份验证而不是服务器端的。
老兄,你在误导,哪有这么简单。
首先,ACTIVE DLL工程必须设置为“远程服务器文件”,其次,在导入组件时队了COM_Test.dll外
还要COM_Test.TLB(类型库)