背景: 我想用python编写一个com组件,然后在vbs中调用.
文件: PyHello.py文件
class PyHello(object):
def __init__(self):
pass
def SayHello(self):
return 'Hello Python!'
def DoAdd(self, a, b):
return a + b
class _WrapPyHello(PyHello):
import pythoncom
# _reg_clsid_ = '{4ae5ed1d-c378-4da1-9816-5a038112dlksdjfasio}'
_reg_clsid_ = pythoncom.CreateGuid()
_reg_progid_ = "Python.PyHello"
_public_methods_ = ['SayHello','DoAdd']
if __name__=='__main__':
import win32com.server.register
win32com.server.register.UseCommandLine(_WrapPyHello)
setup.py文件
from distutils.core import setup
import py2exe
setup(com_server=["PyHello"],
zipfile = None,
options = {
'py2exe' : {
"bundle_files": 1,
"dll_excludes": ["MSVCP90.dll","w9xpopen.exe"]
}
}
)
如果直接运行 PyHello.py 之后,其实已经注册好了,已经可以用VBS调用了
VBS 代码:
Set inst = CreateObject("Python.PyHello")
MsgBox "1111"
MsgBox inst.SayHello()
MsgBox inst.DoAdd(1,3)
现在的问题是,怎么把PyHello.py这个文件编译成dll, 然后在VBS中不依赖python的环境使用.
参考资料:
https://zhuanlan.zhihu.com/p/22023698?refer=python-dev
用这个帖子中的方法,我没有成功
其它资料:
https://www.oschina.net/code/snippet_91334_19994
https://blog.csdn.net/qiaokelinaicha/article/details/68921470
https://blog.csdn.net/DarkChampion/article/details/4420139
困扰好久了, 哪位大神熟悉python,请帮帮忙.