Frage

Ich versuche, Sun VirtualBox zu steuern neueste über sie von Python COM-Schnittstelle ist. Aber leider der folgende Code nicht funktionieren:

import win32com.client
VBOX_GUID = "{B1A7A4F2-47B9-4A1E-82B2-07CCD5323C3F}"
try :
  oVbox = win32com.client.Dispatch( VBOX_GUID )
  oVbox.FindMachine( "kubuntu" )
except Exception as oEx:
  print str( oEx )

Fehler sind allgemein "(-2147467262 'Nein Schnittstelle nicht unterstützt', None, None)" Es scheint, dass der falsche Teil über Python meine COM Gabe ist. Jeder kann einen Blick fallen und einige offensichtliche Sache schlage ich falsch mache?

War es hilfreich?

Lösung

Das Problem ist, dass das Objekt von FindMachine("kubuntu") zurück nicht die IDispatch interface nicht unterstützt, und win32com nicht, dass unterstützen.

Sie könnten mein comtypes Paket verwenden http://starship.python.net/crew/ Theller / comtypes / für das, aber Sie müssen die Version im Repository patchen, um es mit den VirtualBox Typbibliotheken arbeiten zu lassen.

Hier ist eine Demo-Session:

Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from comtypes.client import CreateObject
>>> box = CreateObject("VirtualBox.VirtualBox")
>>> m = box.FindMachine("Fedora")
>>> print m.State
4
>>> print m.CpuCount
1
>>> print m.Name
Fedora
>>>

Und hier ist der Patch, die Sie brauchen:

Index: automation.py
===================================================================
--- automation.py   (revision 507)
+++ automation.py   (working copy)
@@ -753,6 +753,8 @@
     c_float: VT_R4,
     c_double: VT_R8,

+    c_ulonglong: VT_I8,
+
     VARIANT_BOOL: VT_BOOL,

     BSTR: VT_BSTR,
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top