[入门] 有没有达人来做windows com的包装

tuja 2007-04-22

先自我介绍一下,业余程序新手,有一点脚本语言基础,刚接触D,在这里潜水一段时间了,对D很感兴趣,也对D缺少相应支持库感到无奈。

D语言出现也有几年了,但D社区项目很多是半死不活,基础性的工作很少人做。比如windows com的包装就是一个例子。相比我曾接触的其他脚本语言,语言本身和D相比实在不怎么样 但windows包装做得很多很好 社区比D活跃多了

前几天在看大家在讨论用D做开源项目,做什么好,最后决定做词典,还有IDE,这里说一下我个人看法:

1 关于IDE,
    SciTe 1.73版本起就内置D的词法支持了。配置好SciTE,加上齐全的自动完成,代码提示,或者再用lua做一些扩展,就是一个超强的编辑器。虽然说不上是IDE,一般也是够用了,实在是看不到重复造轮子的必要。

2 关于词典
   免费的词典已经有了,用D重新实现一次,除了学习D语言,其他意义不大。

个人觉得,以上项目,远不如在D source上开个com包装的项目,可以让全世界所有用D开发的人受益。别的不说,国内是windows的天下,如果windows com包装得好的话,懂一点其他语言的人立即能用D com做很多事情:
   创建IE实例,实现IE编程
   调用ImageMagick com,进行超强的图像处理操作
   调用 Excel com控制Excel
   调用 Word com控制word
   调用Ftp软件提供的com 进行ftp操作
   ....

这对于在国内推广D可以说是起到非常重要的作用。

一个项目,作用几乎等同于无限的项目。



qiezi说得好“也可以问,为什么不是你在做这些基础工作!”

只是在下才疏学浅,只是业余自学程序,非专业程序员,只有一些极其粗浅的程序基础,虽然很愿意做这项工作,无奈力不从心(至下眼下是希望在各位的帮助下很快有这个能力了。

发这个帖,是希望有人能来挑头做windows com的包装,我愿意跟在后面,尽我的能力,让这个项目能比较长久地活下去,不象Dsource.org很多项目都半死不活很难看。



以下是我和qiezi的一些讨论

tuja     1 天前  

请教怎么样创建一个IE 实例?在vbs中可以这样
Set objExplorer = CreateObject("InternetExplorer.Application")
objExplorer.Navigate "file:///C:\Scripts\progress.htm"

在D中怎么调用com创建IE?



qiezi     23 小时前  

js/vbs/vb里面用的CreateObject,使用的是IDispatch接口,通常比较低效,在静态编译型语言里面一般使用起来也不方便,而且要求该组件必须支持双接口,建议使用CoCreateInstance,找到浏览器使用的IID就可以了,目前我没有这方面的例子。DMD所使用的phobos库里面可能并不包括这个接口的定义和IID,可以使用其它项目比如core32,或者是圈子里面其他会员推荐的库。




tuja     21 小时前  

照下面介绍下载和安装core32
http://dsource.org/projects/core32
可能是代码太老了,bat文件编译时一大堆的错误。

下面的例子代码看上去很简单:
http://dsource.org/projects/core32/browser/trunk/activex/ie.d

但没有办法用啊。D语言看起来好像不错,但在windows下这么麻烦。

oldrev修改版 juno.com.base不知道能不能用来创建IE的实例,谁能举一下例子吗



qiezi     19 小时前  

这个是一年前的,D语言这一年的变化太大了,你可以稍作修正试试能不能用,应该只是一些语法上的问题,实际上初学者也是很容易修改D代码的。

麻烦并不是windows的原因,COM是跨语言跨平台的,使用起来肯定比较麻烦一些,主要是没有比较好的包装类。我目前在做XPCOM,哪天完成了可以试试包装COM,不过应该至少还要几个月时间。



非常感谢qiezi百忙之中指点一二。
D要是能方便地创建com,程序新手就能用D做很多事情了,只要有其他语言调用com的经验,就可以做同样的事情,用com处理图像,ftp,IE编程,excel编程,word编程。。。
为什么这么少的人做这些基础工作?











  

qiezi 2007-04-22
com相关项目在dsource.org上一直有,就是没有坚持维护。

可以从PlatformSDK里面转换,我过我不建议从.h文件转换接口,最好是从idl文件转换,更干净一些。目前xpcom也使用这种方式,不过idl工具不太好使,要是有个D语言的idl parser更好一些。

dsource.org上的codeanalyser是针对D语言解析的,可惜没有通用的解析器,要是有人能发起这样一个项目并且成功实现,就可以省很多事咯。
qiezi 2007-04-22
tuja 写道

只是在下才疏学浅,只是业余自学程序,非专业程序员,只有一些极其粗浅的程序基础,虽然很愿意做这项工作,无奈力不从心(至下眼下是希望在各位的帮助下很快有这个能力了。

我现在已经后悔几年前抱着这样的想法,总是对自己没有信心,所以很多事情想了个开头就扔下了。这两年来我务实了一些,不再谈大目标,只关注眼前要做的事,有了想法就开始做,即便后来因为其它原因没有完成,我也在这个过程中得到了锻炼。
tuja 2007-04-22
qizi说的堪称经典!


只是现在暂时缺少win com的基础,不知道如何入手,有人带头就好了。项目最好开到Dsource上,可以从core32接下去做。

D的社区实在是冷,DFL算是一个例外。
qiezi 2007-04-22
你可以先在core32的项目上做,以后可以往它的论坛上提交patch,也可以申请加入该项目,再开新项目也不太好,除非你所做的和它有非常大的不同。现在上面有好多项目都闲置了。
DavidL 2007-04-22
呵呵,目前没有自动的引进工具,你所希望的Com封装,就需要自己手工port Delphi现有的一些interface。还有OleControl等。其实我并不觉得有了Com就能推动D语言在国内开发,所以也懒得动手。
如果有兴趣你可以看看Delphi的代码,然后自己port过来,也不会很难,sample里面有dserver,dhello,虽然它们两个编译不通过,不过稍作修改就可以用了。
tuja 2007-04-22
这些工作迟早得有人做啊,看看一些小的脚本语言多火,就是封装得好啊
oldrev 2007-04-22
楼主太夸张了,没有C++基础是搞不定这个滴
tuja 2007-04-22
所以说希望有人来做,我在后面学着做
oldrev 2007-04-22
意思是搞一个D版ATL? 这要等顶尖大牛出马
Global site tag (gtag.js) - Google Analytics