如何在客户机中调用在服务器中注册的vfp编写的组件

qufusongyu 2003-08-08 11:38:39
我用vfp编写了一个组件,在服务器中已经成功注册,如何在客户机中调用在服务器中注册的vfp编写的组件。
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaxingxing 2003-08-09
  • 打赏
  • 举报
回复
在一个远程计算机上创建一个已注册 COM 对象(例如一个 Visual FoxPro Automation服务程序)的一个实例。

CREATEOBJECTEX(cCLSID | cPROGID, cComputerName [, cIID])
返回值
Object

参数
cCLSID | cPROGID
为了实例化 COM 对象,为它指定 CLSID (Class Identifier) 或 PROGID(Programmatic Identifier)。如果包含 CLSID,则必须在使用 cComputerName指定的远程服务器上注册该 COM 对象。如果包含 PROGID,则必须在本地计算机上和使用 cComputerName 指定的远程服务器上注册该 COM 对象。试图使用一个 PROGID,而不首先在本地计算机上注册它,会造成 OLE 错误 0x800401f3,即“无效的类串”。
对于在本地计算机上创建的 Visual FoxPro 自动服务程序,可以使用该服务程序对象的 CLSID 和 PROGID 属性确定本地的 CLSID 和 PROGID 值。

cComputerName
指定远程计算机的,将在该计算机上实例化 COM 对象。
如果 cComputerName 是空字符串,则在本地计算机上或重定向的计算机(在注册表中指定)上实例化该 COM 对象。使用 Clireg32.exe 或 Racmgr32.exe 可以通过注册表将本地计算机重定向为另一台计算机。

CComputerName 支持 UNC (Universal Naming Convention) 名称(例如"\\myserver"和 DNS (Domain Name System) 名称(例如"myserver.com","www.microsoft.com"和 "207.68.137.56")。

cIID
当你创建一个类的早期绑定实例时指定 cCLSID | cPROGID 的接口 ID。如果传递一个空串作为 cIID Visual FoxPro 试图访问默认的 cCLSID | cPROGID 接口 (IID)。
示例
x = CREATEOBJECTEX("excel.application","",;
"{000208D5-0000-0000-C000-000000000046}")
注意 下面是一个对 excel Application 对象有效的函数调用。它将返回 excel.application 默认接口。
x = CREATEOBJECTEX("excel.application","","")
备注
如果成功实例化了,CREATEOBJECTEX()返回对该 COM 对象的一个对象引用。CREATEOBJECTEX()不能用来实例化 Visual FoxPro 类,例如表单 – 可使用CREATEOBJECT()实例化 Visual FoxPro 类。注意,只能将 CREATEOBJECTEX()最小缩短为 13 个字符,以区别于 CREATEOBJECT()函数。

当你用 CREATEOBJECT() 调用特定的 COM 类时它们返回 "No such interface supported", 这是因为它们不支持 IDispatch 接口。现在使用 cIID 参数你可以在你的程序中访问这些类了。

如果你传递了一个空串 ("") 作为 cIID, Visual FoxPro 试图获取默认的 CLSID 或 PROGID 指定的接口 (IID)。

因为它支持通过 cIID 早期绑定, CREATEOBJECTEX() 避免过多的 IDispatch 调用过载而有助于改进性能。

CREATEOBJECTEX() 支持创建新的早期绑定对象。但是, 也有可能你的 Visual FoxPro 组件传递一个你想通过早期绑定调用的对象。可以用 GETINTERFACE() 支持已经存在的 COM 对象。

qufusongyu 2003-08-08
  • 打赏
  • 举报
回复
我想做3层结构的项目,我写了个组件放在服务器中,但在客户机中用createobject()函数不能创建该组件的实例,从而我就不能调用该组件的内嵌方法。
net_steven 2003-08-08
  • 打赏
  • 举报
回复
createobjectex()
net_steven 2003-08-08
  • 打赏
  • 举报
回复
createobject()是基于类创建对象的;createobjectex()是基于COM创建实例的.
—vfp8.

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧