DLL schreiben

Für allgemeine Fragen zur Programmierung mit PureBasic.
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

DLL schreiben

Beitrag von Marc-21 »

Hi möchte gerne eine DLL schreiben als plugin für ein anders programm, das programm sucht die dll nach diesen dll befehl On_Start(HINSTANCE MDInstance, HWND MDWnd, BOOL Log_Set, int DLL_ID, char *My_Hot_Key, char *Api_Version, int *Keep_me_running).

In c++ wird das so gemacht

Code: Alles auswählen

extern "C" __declspec (dllexport) void On_Start(HINSTANCE MDInstance, HWND MDWnd, BOOL Log_Set, int DLL_ID, char *My_Hot_Key, 
char *Api_Version, int *Keep_me_running)


wie kann ich das auf Purebasic um münzen möchte nicht in C++ schreiben.

Danke .

benutze PB 4.20
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: DLL schreiben

Beitrag von Kaeru Gaman »

update erstmal dein PureBasic, da hat sich doch was getan in den letzten zwei Jahren.
es wird kaum jemand noch eine 4.2 installiert haben.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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

Re: DLL schreiben

Beitrag von ts-soft »

Das Grundgerüst Deiner Funktion sieht so aus:

Code: Alles auswählen

ProcedureCDLL On_Start(MDInstance.i, MDWnd.i, Log_Set.i, DLL_ID.i, My_HotKey.s, Api_Version.s, *Keep_me_running)

EndProcedure
Unter PB 4.20 mußte die Integer (.i) durch Long (.l) ersetzen.

Aber ich glaube kaum das Dich das weiterbringt :wink:

Gruß
Thomas
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Re: DLL schreiben

Beitrag von Marc-21 »

Wieso?
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: DLL schreiben

Beitrag von Thorium »

Marc-21 hat geschrieben:Wieso?
Weils in 4.20 noch kein .i gibt. :wink:
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: DLL schreiben

Beitrag von mk-soft »

Muss nicht ".i" sein. DLL´s gingen mit der PB4.20 auch

Code: Alles auswählen

ProcedureCDLL On_Start(MDInstance.l, MDWnd.l, Log_Set.l, DLL_ID.l, My_HotKey.s, Api_Version.s, *Keep_me_running)

EndProcedure
Must mal aus probieren...
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

Re: DLL schreiben

Beitrag von ts-soft »

ts-soft hat geschrieben: Unter PB 4.20 mußte die Integer (.i) durch Long (.l) ersetzen.
Dieser Hinweis war doch eindeutig, oder etwa nicht?
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Re: DLL schreiben

Beitrag von Marc-21 »

Hi

so geht es

Code: Alles auswählen

ProcedureCDLL On_Start(MDInstance, MDWnd, Log_Set, DLL_ID, My_HotKey, Api_Version, *Keep_me_running)

EndProcedure
aber hier kommt gleich das nächtest problem

Code: Alles auswählen

ProcedureCDLL On_Send_Dll_ID_Name(*Name)
*Name = AllocateMemory(5000)
PokeS(*Name,"EMU")
a$ = PeekS(*Name)
EndProcedure
Wenn ich das den auf rufe : On_Send_Dll_ID_Name(*Name)

und die dll im anderen Programm auf rufe wird der name nicht angezeigt.
mache ich was falscH?
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

Re: DLL schreiben

Beitrag von ts-soft »

In welchem Format erwartet denn das andere Programm den String?

Kannst ja mal:

Code: Alles auswählen

ProcedureCDLL On_Send_Dll_ID_Name(*Name)
  *Name = SysAllocString_("EMU")
EndProcedure 
probieren
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Re: DLL schreiben

Beitrag von Marc-21 »

danke geht leider auch nicht.
unter C++ wird es so gemacht

#define Emu "Emu"

DLL void On_Send_Dll_ID_Name(char *Name)
{
strcpy(Name,Emu);
}
Antworten