2017-05-27 19 views
1

如何启动一个Windows应用程序,如记事本使用Python NET?这是蟒蛇2.7.13我的源代码:Python NET启动一个Windows应用程序

C:\Python27>python.exe 
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import clr 
>>> import System 
>>> type = System.Type.GetTypeFromProgID("Notepad.Application") 
>>> System.Activator.CreateInstance(type) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
System.ArgumentNullException: Value cannot be null. 
Parameter name: activationContext 
    at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData) 
    at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext) 
    at System.Activator.CreateInstance(ActivationContext activationContext) 
+0

您可以检查如果'type'不是'None'?你确定ProgID =“Notepad.Application”吗?它为我返回null。 ''''也是Python中的保留关键字。 – denfromufa

+0

这是一个古老的例子,我认为是内部python错误与这个包的新版本System和实例化方式。 –

+0

我不理解你 – denfromufa

回答

0

没有进程id =“Notepad.Application” COM我的机器上的对象,pythonnet可与其他COM对象:

>>> import clr 
>>> import System 
>>> type1=System.Type.GetTypeFromProgID("Excel.Application") 
>>> type1 
<System.RuntimeType object at 0x02ABEE10> 
>>> System.Activator.CreateInstance(type1) 
<Microsoft.Office.Interop.Excel.ApplicationClass object at 0x02AD11D0> 
+0

所以只需Excel可以启动它呢?我的示例中可以使用哪些COM对象? –

+0

您可以使用此实例化任何COM对象。我只是给了Excel例子,因为它很受欢迎。 – denfromufa

+0

我从理论上知道COM对象是如何工作的,但我不确定它是否适用于python和这个python模块。需要更多信息和帮助。 –