2017-05-27 22 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模塊。需要更多信息和幫助。 –