hsgzr_sj7 发表于 2019-11-28 09:07

关于vb6调用python的问题

python做图形界面很费劲 ,但语言功能很强大,vb6做界面不好看,但很方便,所以就像到了vb6和python通讯问题,随着找度娘,还真找到了方法,但试了好多天实现不了,

一、按照例子,python没问题,运行没错误,但vb6在创建set PythonUtils = CreateObject("PythonDemos.Utilities")时,提示“自动化错误”,不知这个错误是怎么造成的,还是需要引用什么东西?
关于vb6和python的调用出错问题在网上没找到答案,可以说这方面东西很难找


二、然后我按使用python做了一个调用 程序 ,调用的这个python例子中的“PythonDemos.Utilities”com,是能调用成功的,证明python写的这个COM组件是没问题。
三、现将网上的例子放在这里,请各位大佬看看哪里有问题,还少什么东西,为什么我就不能成功调用了,有时间各位也试试,共同研究一下。

vb6实例如下:
Private Sub Form_Load()
    Set PythonUtils = CreateObject("PythonDemos.Utilities")
    response = PythonUtils.SplitString("Hello from VB")
    For Each Item In response
      MsgBox Item
    Next
End Sub
python代码如下:
#需要先安装pipywin32模块
class PythonUtilities:

    _public_methods_=['SplitString']
    _reg_progid_='PythonDemos.Utilities'

    # 使用"print (pythoncom.CreateGuid())" 得到一个自己的clsid,不要用下面这个!!
    _reg_clsid_='{5FCAC95E-653A-484C-8568-A02D5E0256E8}'

    def SplitString(self, val, item=None):
      import string
      if item !=None:
            item=str(item)
      val=str(val)
      return val.split(item)

if __name__=='__main__':
    print ('Registering COM server...')
    import win32com.server.register
    win32com.server.register.UseCommandLine(PythonUtilities)

kuqideyanlei 发表于 2019-11-28 09:37

网上说了 需要用到32位的python

hsgzr_sj7 发表于 2019-11-28 10:30

谢谢三楼 网上说了 需要用到32位的python,哦还有这一说呢 我使用的确实是64位python,这个说法没在网上看到过,一直还钻死牛角呢,那老师问一下32位python和64位可以并存吗?我安装在两个目录是否可以?

cube 发表于 2019-11-28 13:31

本帖最后由 cube 于 2019-11-28 13:46 编辑

hsgzr_sj7 发表于 2019-11-28 10:30
谢谢三楼 ,哦还有这一说呢 我使用的确实是64位python,这个说法没在网上看到过,一直还钻死牛角呢,那老师 ...
完全可以.
至于32-64位的问题.我认为,都可以.(未测试)
如果不可以,我认为是vb6不支持64位com

hsgzr_sj7 发表于 2019-11-29 09:09

有兴趣的可以也试试 看到底是什么原因

onoffon 发表于 2020-2-9 12:04

找到答案没有
页: [1]
查看完整版本: 关于vb6调用python的问题