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 :wink:
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 :wink:

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 :wink:

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 :wink:
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 /:->