Dll -> IncludeBinary -> VB6
Dll -> IncludeBinary -> VB6
Hallo!
Ich würde gerne Daten zwischen einer PureBasic DLL und Visual Basic 6 austauschen.
Strings und numerische Datentypen lassen sich ja austauschen.
Wie sieht es mit eingebetteten Files ("IncludeBinary" in "DataSection") aus? Gibt es eine Möglichkeit, z.B. eine Bitmap aus der DLL an VB zu übergeben und diese dort in einer PictureBox anzuzeigen?
Viele Grüße
Hawk78
Ich würde gerne Daten zwischen einer PureBasic DLL und Visual Basic 6 austauschen.
Strings und numerische Datentypen lassen sich ja austauschen.
Wie sieht es mit eingebetteten Files ("IncludeBinary" in "DataSection") aus? Gibt es eine Möglichkeit, z.B. eine Bitmap aus der DLL an VB zu übergeben und diese dort in einer PictureBox anzuzeigen?
Viele Grüße
Hawk78
Re: Dll -> IncludeBinary -> VB6
Ja das geht, du musst halt nur in der DLL, wo die Daten drin liegen, eine Funktion definieren, die dir dann die Adressen zurück geben kann.
Hier mal ein Beispiel für die DLL:
Und das Beispiel zur Nutzung:
Hier mal ein Beispiel für die DLL:
Code: Alles auswählen
ProcedureDLL.i GetImage(Number.i) ; gibt die gewünschte Adresse zurück
Select Number
Case 1
ProcedureReturn ?Image1
EndSelect
EndProcedure
DataSection
Image1:
IncludeBinary "Image1.png"
EndDataSectionCode: Alles auswählen
Import "Evaluate.lib"
GetImage(*Function)
EndImport
Enumeration
#Image
EndEnumeration
UsePNGImageDecoder()
CatchImage(#Image, GetImage(1)) ; Lädt das Image aus dem Ort der durch GetImage aus der DLL zurückgegeben wird.
ShowLibraryViewer("Image", #Image)
CallDebugger
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- 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
Re: Dll -> IncludeBinary -> VB6
So bekommt er kein PictureObject, eher so:
Aber mangels VB6 kann ich es nicht testen.
Code: Alles auswählen
UsePNGImageEncoder()
ProcedureDLL.i GetImage(Number.i) ; gibt hDC zurück.
Select Number
Case 1
ProcedureReturn CatchImage(1, ?Image1)
EndSelect
EndProcedure
DataSection
Image1:
IncludeBinary "Image1.png"
EndDataSection 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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Dll -> IncludeBinary -> VB6
@ts-soft
Ne so geht das garnicht, weil das Image mit der Nummer 1 nur in der DLL verfügbar wäre.
So wie ich Hawk78 verstanden habe, möchte er die DLL ja nur als "DataSection" benutzten und das Bild normal als PNG drinne lagern und dann mit VB6 dieses Bild laden.
Ne so geht das garnicht, weil das Image mit der Nummer 1 nur in der DLL verfügbar wäre.
So wie ich Hawk78 verstanden habe, möchte er die DLL ja nur als "DataSection" benutzten und das Bild normal als PNG drinne lagern und dann mit VB6 dieses Bild laden.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- 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
Re: Dll -> IncludeBinary -> VB6
Dann muss er es aber vorher speichern und braucht die Länge.
Das von meinem Code zurückgegebene Handle ist solange gültig, wie die DLL
geladen bleibt und das ganze hab ich schon mit anderen Sprachen gemacht,
das funktioniert. Kann aber sein, das er unbedingt ein OLE-Object benötigt,
das weiß ich jetzt nicht.
Das von meinem Code zurückgegebene Handle ist solange gültig, wie die DLL
geladen bleibt und das ganze hab ich schon mit anderen Sprachen gemacht,
das funktioniert. Kann aber sein, das er unbedingt ein OLE-Object benötigt,
das weiß ich jetzt nicht.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Dll -> IncludeBinary -> VB6
genau! Ich möchte die DLL als "Medienspeicher" nutzen, damit die VB exe nicht unötig groß wird. Ich suche schon lange eine Lösung für das Problem, habe aber leider noch keine funktionierende Lösung dafür gefunden. Vielleicht geht es ja irgendwie...alternativ kann man ja auch eine C++ DLL nehmen...wenn es leichter geht...STARGÅTE hat geschrieben:...So wie ich Hawk78 verstanden habe, möchte er die DLL ja nur als "DataSection" benutzten und das Bild normal als PNG drinne lagern und dann mit VB6 dieses Bild laden.
Die Frage ist halt, wie ich aus den DLL-Binary-Daten wieder ein Picture/bzw. Image Objekt machen kann...?!
Danke für eure Hilfe,
Gruß
Hawk78
- 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
Re: Dll -> IncludeBinary -> VB6
Genau das macht mein Codebeispiel, gibt ein ImageObject zurück!Hawk78 hat geschrieben:Die Frage ist halt, wie ich aus den DLL-Binary-Daten wieder ein Picture/bzw. Image Objekt machen kann...?!
Die DLL muss aber per LoadLibrary geladen werden.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Dll -> IncludeBinary -> VB6
Das Beispiel für die Nutzung ist doch ein VB .net Beispiel und nicht (wie gesucht) für VB6, oder täusche ich mich?!
Gruß
Hawk78
Gruß
Hawk78
- 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
Re: Dll -> IncludeBinary -> VB6
Ich habe kein Beispiel für die Nutzung gepostet und das Beispiel zur Nutzung von STARGÅTE ist in PB geschrieben 
Das laden der DLL und aufrufen von GetImage(1) musst Du wohl selber schreiben
Das laden der DLL und aufrufen von GetImage(1) musst Du wohl selber schreiben
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
Andreas21
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
Re: Dll -> IncludeBinary -> VB6
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32