vfp9 如何开发多线程com 给其他语言做接口

jack_wang0823 2017-03-10 04:50:51
vfp9 如何开发多线程com 给其他语言做接口 有没有资料可以参考
...全文
1370 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack_wang0823 2017-03-17
  • 打赏
  • 举报
回复
引用 22 楼 taohua300 的回复:
总起来说,给其他语言用的dll与平时的书写习惯有那么一点不同。并且如果数据类型不对应,最终可能也会导致错误。
vfp 类定义中私有属性 和保护属性 使用 PROTECTED或者 HIDDEN 没有关键字代表public 多谢费心指点 我再 试一下别的途径
jack_wang0823 2017-03-16
  • 打赏
  • 举报
回复
引用 18 楼 dkfdtf 的回复:
找个第三方的 COM,先确定不是调用方 权限 或 语法 的问题 或到 jave 或 php 板块去问问,关于调用自己开发的 COM 对象方法有哪些要求
系统调用方面和权限方面应该没问题 , 因为 原来有个DLL 文件调用是正常工作的, 这个DLL 文件是一个设备的驱动. 按照供应商提供的 api 开发接口文件 正常工作, 现在的情况是, 安装了新设备 这个新设备在旧的 dll 文件下工作有些功能工作不正常, 所以供应商提供了新的 DLL 文件. 但是这个dll文件在脚本模式下 根本无法建立对象, 但是在VFP 下工作所有都正常, 厂房拒绝提供源代码. 所以只能用vfp做个COM 再包一层 ...
都市夜猫 2017-03-16
  • 打赏
  • 举报
回复
另外, taohua 的写法没问题,是你在 vfp 中调用时写法有错,最后多个一个逗号,也就是还传入了第三个参数,没指明值的话就是 .F. 网页中要创建 COM 对象,比本地应用安全性上要严格得多,网页是远程调用,任何用户(匿名用户)都可以打开你的网页,这涉及到 DCOM / COM+ / MTS 概念,这都需要做安全性配置,只不过很多是在安装程序中就配置好了
都市夜猫 2017-03-16
  • 打赏
  • 举报
回复
找个第三方的 COM,先确定不是调用方 权限 或 语法 的问题 或到 jave 或 php 板块去问问,关于调用自己开发的 COM 对象方法有哪些要求
jack_wang0823 2017-03-16
  • 打赏
  • 举报
回复
是否能将您编译好的COM 在javascript 中测试一下 看看是否是引用方本身的问题
jack_wang0823 2017-03-16
  • 打赏
  • 举报
回复
引用 15 楼 taohua300 的回复:

多谢指点,

安装你的写法 vfp 能够正常编译通过 但是在 vfp中建立对象 运行时会出现以下错误
vfp 源码

错误提示


在 javascript 和 php 中的出错提示 依然一样 无法建立对象
taohua300 2017-03-16
  • 打赏
  • 举报
回复
总起来说,给其他语言用的dll与平时的书写习惯有那么一点不同。并且如果数据类型不对应,最终可能也会导致错误。
taohua300 2017-03-16
  • 打赏
  • 举报
回复
php,java只是接触过,不会用了,做不了测试,不好意思。 vfp中变量不需要声明就能使用,这将导致vfp的dll在其他环境中使用或许会出现这样或那样的问题。如果遵照变量先声明后使用,还是会出现这样或那样的问题。起码函数重载就不个不大不小的问题。 既然是设备驱动,用vfp封装一遍相对比其他语言要困难一些,不包括我不知道的语言。 或许真正的“vfp.net”就要来了,到时候用起来不知道什么感觉,有兴趣的可以了解一下x#
十豆三 2017-03-15
  • 打赏
  • 举报
回复
xilaianzxsc 2017-03-15
  • 打赏
  • 举报
回复
学习了. 真是佩服老师的能力
taohua300 2017-03-15
  • 打赏
  • 举报
回复
taohua300 2017-03-15
  • 打赏
  • 举报
回复
可能是跟方法是书写方式有关吧,至少我在类似的测试发现有些不同
下面这样些,然后在c#中调用
是可以的

如果下面这样两种写法,会提示错误

都市夜猫 2017-03-15
  • 打赏
  • 举报
回复
先确定是否权限的问题,通常 COM 组件是禁止 guest 用户访问的
jack_wang0823 2017-03-15
  • 打赏
  • 举报
回复
引用 9 楼 dkfdtf 的回复:
我贴的截图是使用 OleViewer 的显示图
你要用 vfp 自带的工具查看组件结构的话,应该用对象浏览器,而不是类浏览器



编译后的dll 应该没什么问题

在javascript的表现是
<script type="text/javascript">
function ss_jc_jc(){
//开始先设置3个变量 用来装3个字段
var add1= document.getElementById("A1");
alert(add1.saygood());

}
</script>
</head>

<body>
<OBJECT ID="A1"
CLASSID="CLSID:CAD0531F-01FD-4420-8408-55A6D0E4FA08">
</OBJECT>

<input type="button" onclick="javascript :ss_jc_jc();" value="tttt"/>
</body>
</html>


在php的表现是

<?php
header("Content-Type: text/html; charset=utf-8");

$aa= new COM("zkemvfp.zkem") or die("Unable to instanciate Word");


?>

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `zkemvfp.zkem' in D:\wamp\www\testckvfp.php on line 4

jack_wang0823 2017-03-14
  • 打赏
  • 举报
回复
我安装的版本是
jack_wang0823 2017-03-14
  • 打赏
  • 举报
回复
引用 5 楼 dkfdtf 的回复:
[quote=引用 4 楼 jack_wang0823 的回复:]
查了一些资料 , 好像COM 组件开发中需要预定义很多 接口的, 像这样简单的 定义,也只有 VFP 能认出来了 不知道有哪些接口规范 可以参考

但是给其他程序调用 就不行了 , 总提示 对象建立失败.
...
查了一些资料 , 好像COM 组件开发中需要预定义很多 接口的, 像这样简单的 定义,也只有 VFP 能认出来了 不知道有哪些接口规范 可以参考

怎么会不行,只要编译成 dll 后其他语言就同样可以用 CreateObject 创建实例
如果是在其它人的机器上,先用 RegSvr32 注册
至于 COM 接口,vfp 编译时会自动创建,就编译你那几行代码,创建出的 dll 就会存在下列标准接口
[/quote]

我可能装了一个假的VFP 我编译出来的 dll 看起来是这样的

都市夜猫 2017-03-14
  • 打赏
  • 举报
回复
引用 4 楼 jack_wang0823 的回复:
查了一些资料 , 好像COM 组件开发中需要预定义很多 接口的, 像这样简单的 定义,也只有 VFP 能认出来了 不知道有哪些接口规范 可以参考
...
但是给其他程序调用 就不行了 , 总提示 对象建立失败.
...
查了一些资料 , 好像COM 组件开发中需要预定义很多 接口的, 像这样简单的 定义,也只有 VFP 能认出来了 不知道有哪些接口规范 可以参考

怎么会不行,只要编译成 dll 后其他语言就同样可以用 CreateObject 创建实例
如果是在其它人的机器上,先用 RegSvr32 注册
至于 COM 接口,vfp 编译时会自动创建,就编译你那几行代码,创建出的 dll 就会存在下列标准接口
jack_wang0823 2017-03-14
  • 打赏
  • 举报
回复
引用 3 楼 firstxinjie 的回复:
[quote=引用 楼主 jack_wang0823 的回复:] vfp9 如何开发多线程com 给其他语言做接口 有没有资料可以参考
VFP可以编译出标准的多线程COM,其使用方法和其他语言所做的,应该没什么差别。 二楼的回复是VFP中实现多线程的一些资料,和多线程COM无关。[/quote] 多谢指点 , 网上搜集了一些资料, 依葫芦画瓢 , 编译出了测试用的 DLL文件,, 现在 的问题时 , 这个dll 在vfp 里面用 CREATEOBJECT("文件名.类名的")的方式调用 没有任何问题 , 但是给其他程序调用 就不行了 , 总提示 对象建立失败.


Define Class testc As Session OLEPUBLIC


Procedure saygood
		Parameters  msg
		Return  msg
Endproc

Enddefine
查了一些资料 , 好像COM 组件开发中需要预定义很多 接口的, 像这样简单的 定义,也只有 VFP 能认出来了 不知道有哪些接口规范 可以参考
都市夜猫 2017-03-14
  • 打赏
  • 举报
回复
我贴的截图是使用 OleViewer 的显示图
你要用 vfp 自带的工具查看组件结构的话,应该用对象浏览器,而不是类浏览器

xilaianzxsc 2017-03-14
  • 打赏
  • 举报
回复
同样学习了.
加载更多回复(3)

2,749

社区成员

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

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