Forum: PC-Programmierung DLL einbinden VB6


von Matze D. (matze0304)


Lesenswert?

Hallo Zusammen,

ich bin noch ziemlicher Anfänger mit VB6 und gerade dabei eine externe 
Dll einzubinden über Delcare Function....

Jetzt habe ich folgendes Problem wie kann ich folgenden Structur in VB6 
abbilden (Beispiel stammt aus VB.net2005)?
1
 Public Structure LND_NOTIFICATION
2
        Dim type As UShort
3
4
        ''            union
5
        ''          {
6
        ''            struct
7
        ''          {
8
        ''            PDLN_CALLBACK function;
9
        ''            void *context;
10
        ''          } callback;
11
        ''#ifdef WIN32
12
        ''        HANDLE event;
13
        ''       struct
14
        ''        {
15
        ''            HWND handle;
16
        ''            UINT message;
17
        ''        } windowMessage;
18
        ''        struct
19
        ''        {
20
        ''           DWORD thread;
21
        ''            UINT message;
22
        ''        } threadMessage;
23
        ''#endif // WIN32
24
        ''          uint8_t reserved[64];
25
        ''    };
26
27
    End Structure

von Felix U. (ubfx)


Lesenswert?

Matze D. schrieb:
> Ich bin noch ziemlicher Anfänger mit VB6
Dann fang doch gleich mit was ordentlichem an, solange du noch nicht zu 
tief drin bist.

Deine vb.net Structure hat ja nur ein Member. Oder was soll das 
auskommentierte?
1
Private Type LND_NOTIFICATION
2
    _type As Integer
3
End Type

von Robert C. (anykey)


Lesenswert?

Geh mal auf "www.pinvoke.net" und such nach dem Namen deine API.
Da sind dann die Konvertierungen gelistet.

Gruß Robert

von Felix U. (ubfx)


Lesenswert?

Robert C. schrieb:
> Geh mal auf "www.pinvoke.net" und such nach dem Namen deine API.
Es geht nicht um eine WinAPI, aber wo kann man da VB6 Signaturen 
kriegen?

: Bearbeitet durch User
von Flip (Gast)


Lesenswert?

Robert C. schrieb:
> Geh mal auf "www.pinvoke.net" und such nach dem Namen deine API.
> Da sind dann die Konvertierungen gelistet.

Ja, für .NET, der TO will aber VB6.

@Matze
> Beispiel stammt aus VB.net2005

Na ja, das ist wohl eher auskommentierter C-Code mit 3 Zeilen VB.

Struktur in VB6 (zumindest ein einfaches Beispiel):
https://msdn.microsoft.com/de-de/library/030kb3e9(v=vs.90).aspx

Vielleicht auch nützlich (ähnliche Frage):
http://www.vbforums.com/showthread.php?505818-RESOLVED-C-Structures-Unions-and-Pointers-in-VB6

von Felix U. (ubfx)


Lesenswert?

Es geht wohl um die struct aus dem header:
https://github.com/PISCES-HI/rover-onboard/blob/master/thirdparty/include/dln/dln_generic.h

da ist das Problem, dass du in der Struktur 64 Byte freihalten musst, 
gleichzeitig aber die ersten 8 dieser 64 Byte als struktur 
interpretieren. Würde das so machen:
1
Private Type DLN_container
2
    _type As Integer
3
    data(64) As Byte
4
End Type
5
6
Private Type DLN_message
7
    handle As Long
8
    message As Long
9
End Type

Dann der Funktion einen DLN_container übergeben, damit auf jeden Fall 
genug Speicher allokiert ist. Anschließend
1
Dim msg As DLN_message
2
LSet msg = container.data

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.