2012-04-22 95 views
2

我试图将此VBScript代码转换为Python(Win32)代码但没有运气!VBScript到Python片段转换

Dim objMain, objSysInf, stMsg 

Set objMain = CreateObject("nnetcom.oMain") 

Call objMain.UnlockComponent("xxx-xxxxx-xxxxx-xx") 

Set objSysInf = CreateObject("nnetcom.oSystemInfo") 

Call objSysInf.GetSystemInfos 

stMsg = objSysInf.cOsName & " " & objSysInf.cOsType & vbCrLf & _ 
     objSysInf.cOsCpu & vbCrLf & objSysInf.cOsMem & vbCrLf & _ 
     objSysInf.cOsGpu 

MsgBox stMsg, vbInformation, "System Information" 

Set objSysInf = Nothing 
Set objMain = Nothing 

我运行Windows 7 32位与的Python 2.7.3的Python安装的Windows扩展。 此外,我从...... 执行“makepy.pyc”添加COM对象“LIB \站点包\ win32com \客户端\”并没有运气,总是得到一些错误信息......

这是我的Python代码:

import pythoncom 
import win32com.client 

objMain = win32com.client.Dispach("nnetcom.oMain") 

ret = objMain.UnlockComponent("xxx-xxxxx-xxxxx-xx") 

objSysInf = win32com.client.Dispach("nnetcom.oSystemInfo") 

objSysInf.GetSystemInfos() 

stMsg = objSysInf.cOsName 

print(stMsg) 

有没有人可以帮助我进行这个对话?

+2

请显示完整的错误输出。 – Marcin 2012-04-22 13:14:52

+0

**您好的Marcin ** 以下是错误输出: C:\> C:\ PROGRA〜1 \的Python \ python.exe C:\ example2.py 回溯(最近最后一次调用): 文件 “C:\ example2.py”,4号线,在 objMain = win32com.client.Dispach( “nnetcom.oMain”) AttributeError的: '模块' 对象有没有属性 'Dispach' 你能帮助我? ** Ragards,维克多** – beic 2012-04-22 13:27:20

回答

4

Dispach应该可能是Dispatch

+0

哦,我的上帝,我在那里犯了一个错字! :D 它现在正在工作,但如何在上面贴出的VBScript代码中创建换行符和新行?谢谢你的协助! ;) – beic 2012-04-22 13:40:35

+0

您可以使用内置str类型的方法以及常用的序列操作将字符串拆分为所需的行。请参阅Python标准库文档的第5.6节。把这些行放在一个列表中。然后使用''\ n'.join()'(也许在Windows上使用'\ r \ n'.join()')来创建一个新的字符串,其中包含列表中的字符串,并用换行符分隔。 – 2012-04-22 14:16:40

+0

通过换行符和换行符我的意思是,如何在VBScript示例中编写较短的代码行,请参见:stMsg = – beic 2012-04-22 14:44:58