PureDispHelper

Anfängerfragen zum Programmieren mit PureBasic.
günter
Beiträge: 5
Registriert: 30.03.2008 16:10

PureDispHelper

Beitrag 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()
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Falsches Forum, hier werden Tipps & Tricks gepostet :wink:
Versuchs mit dhGetValue, gibt auch Objekte zurück!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

verschoben nach "Anfänger"

...willkommen im Board, günter
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
günter
Beiträge: 5
Registriert: 30.03.2008 16:10

Beitrag 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 ...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Das ist meines Wissens nach auch erforderlich. Mit VBS kenne ich mich aber
nicht aus.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
günter
Beiträge: 5
Registriert: 30.03.2008 16:10

Beitrag von günter »

Die Instanz des Objektes besteht bereits - ich muss sie mir mit dhGetObject besorgen! Brauche ein Beispiel, bitte ...
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag 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:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
günter
Beiträge: 5
Registriert: 30.03.2008 16:10

Beitrag 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.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag 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:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 /:->
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten