如何调用本机注册的com组件?

辅导费卡了 2002-09-02 11:29:18
同事写了一个com给我,我用regsvr32 c:/a/php4.2.2/extensions/price.dll在本机注册了这个price.dll,传入Code,函数是GetPrice(Code string),返回值为Price 整型。请问我的PHP中该如何调用这个dll呐?急急急//bow
...全文
165 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
辅导费卡了 2002-09-03
  • 打赏
  • 举报
回复
我找不到别的跟这个类似的值了啊。你提到的三点,只有第一点有可能发生。但是。。。怎么可能呐?CLSID我是搜索注册表找到的啊
phpteam 2002-09-02
  • 打赏
  • 举报
回复
上面这句是实例化一个组件的意思,test1.Info是OLE 程序标识。
获得正确的对象标识名不是一件容易的事。你可以查找一下windows的注册表,在 HKEY_CLASSES_ROOT 中寻找一下你注册的price.dll,在你的机器上有效的对象标识放在 CLSID 子文件夹下。
辅导费卡了 2002-09-02
  • 打赏
  • 举报
回复
我看别人有这么写的:
<?
global $id,$Number,$Title;
$rfq=new COM("test1.Info");
$ret=$rfq->Get($id,$Number,$Title);
echo $ret;
echo $id.$Number.$Title."<br>";

?>
我不知道$rfq=new COM("test1.Info"); 到底是什么意思。那个test1是什么?那个Info又是什么?请教啊请教
phpteam 2002-09-02
  • 打赏
  • 举报
回复
What does 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}' mean ?

This error can have multiple reasons:

1、the CLSID is wrong
2、the requested DLL is missing
3、the requested component doesn't implement the IDispatch interface

你再找找看,可能不是Price.TracePrice


辅导费卡了 2002-09-02
  • 打赏
  • 举报
回复
我去查注册表了。在{98087D89-5801-4C53-B26B-DEB5443EA3B9}这块有我的Price.dll,里面的一个ProgID中的键值是Price.TracePrice,我就用这个作为标识。如下:
global $code;
$code="117411";
$rfq=new COM("Price.TracePrice");
$ret=$rfq->getprice($code);
echo $ret."<br>";
但是运行结果显示Warning: Unable to obtain IDispatch interface for CLSID {98087D89-5801-4C53-B26B-DEB5443EA3B9}: 不支持此接口 in c:\apache\htdocs\ver.php on line 8

Fatal error: Call to a member function on a non-object in c:\apache\htdocs\ver.php on line 9
这是什么问题?

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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