Seite 1 von 2
PureDispHelper
Verfasst: 30.03.2008 16:28
von günter
Hallo zusammen,
über PureDispHelper wurde bereits viel diskutiert. Aber leider finde ich im Forum nur Beispiele mit
dhCreateObject …
Ich brauche aber dringend ein Beilpiel mit
dhGetObject…
Geht das auch ohne PureDispHelper?
Für Hilfe wäre ich sehr dankbar.
Gruß, Günter
Beispiel in VB:
Public me As Variant
Set me = GetObject(, "Meine.Extension")
me.TuEtwas()
Verfasst: 30.03.2008 16:48
von ts-soft
Falsches Forum, hier werden Tipps & Tricks gepostet
Versuchs mit dhGetValue, gibt auch Objekte zurück!
Verfasst: 30.03.2008 16:51
von Kaeru Gaman
verschoben nach "Anfänger"
...willkommen im Board, günter
Verfasst: 30.03.2008 17:08
von günter
...danke.
Für ein Beispiel wäre ich dennoch dankbar.
Im Forum gibt's zwar Beispiele für dhGetValue, aber immer wurde vorher mit dhCreateObjekt eine Instanz erstellt ...
Verfasst: 30.03.2008 17:15
von ts-soft
Das ist meines Wissens nach auch erforderlich. Mit VBS kenne ich mich aber
nicht aus.
Verfasst: 30.03.2008 17:22
von günter
Die Instanz des Objektes besteht bereits - ich muss sie mir mit dhGetObject besorgen! Brauche ein Beispiel, bitte ...
Verfasst: 30.03.2008 17:33
von mk-soft
Es muss immer ein Object mit dhCreateObject erstellt werden.
Unterobjekte werden dann mit dhGetValue angelegt.
Siehe Beispiel mit Excel.
Code: Alles auswählen
dhGetValue("%o", @Workbook, ExcelApp, ".Workbooks.Add")
Workbook wäre dann das Objekt.
FF

Verfasst: 30.03.2008 17:53
von günter
Das Objekt, das ich ansprechen will, ist eine Extension eines anderen Programms. Benutzte ich dhCreateObjekt, würde ich eine neue Instanz bilden und das andere Programm würde nicht reagieren.
Möglicherweise kann ich PureBasic nicht verwenden. Aber so schnell will ich nicht aufgeben, schließlich gibt es im DispHelper die Funktion dhGetObject, über deren Parameter ich mir aber nicht im Klaren bin.
Verfasst: 30.03.2008 18:43
von mk-soft
Es gibt mit dhGetObject wohl ein Problem wenn der erste Parameter mal NULL sein muss.
Dafür bei det DispHelper_Include.pb folgendes erweitern. dhGetObjectEx_(...)
Code: Alles auswählen
ImportC "disphelper.lib"
...
...
dhGetObject_(szFile.p-bstr, szProgId.p-bstr, *ppDisp.IDispatch) As "_dhGetObject"
dhGetObjectEx_(szFile.l, szProgId.p-bstr, *ppDisp.IDispatch) As "_dhGetObject"
...
...
Beispiel aus Scoure von Disphelper
Code: Alles auswählen
Procedure.s FormatMessage(ErrorNumber.l)
Protected *Buffer, len, result.s
len = FormatMessage_(#FORMAT_MESSAGE_ALLOCATE_BUFFER|#FORMAT_MESSAGE_FROM_SYSTEM,0,ErrorNumber,0,@*Buffer,0,0)
If len
result = PeekS(*Buffer, len - 2)
LocalFree_(*Buffer)
ProcedureReturn result
Else
ProcedureReturn "Errorcode: " + Hex(ErrorNumber)
EndIf
EndProcedure
XIncludeFile "DispHelper_Include.pb"
dhInitializeImp()
;// Get a running instance of word
r1 = dhGetObjectEx_(0, "Word.Application", @wdApp);
Debug FormatMessage(r1)
Werde mich noch mit ts-soft wegen dieses Problem in verbindung setzen
FF

Verfasst: 30.03.2008 18:47
von ts-soft
mk-soft hat geschrieben:
Werde mich noch mit ts-soft wegen dieses Problem in verbindung setzen
FF

Okay, ab nächsten Monat habe ich wieder etwas mehr Zeit. Denke mal das
ich auch noch nicht die aktuellen Helper von Dir beigefügt habe, naja Umzug
Rechner kaputt usw., alles ein bissel durcheinander bei mir
