000
17.11.2003, 16:47 Uhr
virtual
Sexiest Bit alive (Operator)
|
Wir haben eine eigene Scriptsprache geschrieben, die u.a. auch COM Objekte instantiiert. So kann man - ähnlich wie in VB - zB Word aus dem Script heraus öffnen und allerlei Sachen damit machen.
Nach der reinen COM Lehre sollte es IMHO so sein, daß ein COM Objekt garantiert solange lebt, bis die Letzte Referenz auf selbiges gelöscht wurde. Leider scheint dem ja nicht so zu sein, weil wenn ich mir zB Word mit Hilfe von COM öffne und dann der Benutzer das Fenster durch Klicken des Close-Buttons schließt (also letztlich die Quit-Methode des COM Objekts aufruft), dann ists weg.
Noch doofer ist das deshalb, weil der Scriptinterpreter das natürlich nicht mitbekommt: Das Interface wird dem Interpreter also einfach unter der Nase geklaut. Nun suche ich eine Möglichkeit, aus dem Script heraus zu bestimmen, ob ein COM Objekt noch gültig ist. Nur wie macht man das?
Derzeit handel ich nur mit IDispatch -Interfaces (ist ja logische Wahl für einen Interpreter), und rufe einfach über die Invoke Methode Invoke selbst ohne jeglichen Parmeter auf. Leider hat diese Vorgehensweise Lücken, funktioniert also nicht bei allen Objekten (bei manchen aber sehr zuverlässig!).
Hat Bill vielleicht eine Möglichkeit vorgesehen, mit der man herausbekommt, ob ein COM Objekt noch lebt? -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |