Seite 1 von 2
DLL schreiben
Verfasst: 22.12.2009 19:07
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
Re: DLL schreiben
Verfasst: 22.12.2009 19:11
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.
Re: DLL schreiben
Verfasst: 22.12.2009 19:20
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
Gruß
Thomas
Re: DLL schreiben
Verfasst: 22.12.2009 20:16
von Marc-21
Wieso?
Re: DLL schreiben
Verfasst: 22.12.2009 21:18
von Thorium
Marc-21 hat geschrieben:Wieso?
Weils in 4.20 noch kein .i gibt.

Re: DLL schreiben
Verfasst: 23.12.2009 16:27
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...
Re: DLL schreiben
Verfasst: 23.12.2009 17:27
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?
Re: DLL schreiben
Verfasst: 25.12.2009 21:12
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?
Re: DLL schreiben
Verfasst: 25.12.2009 21:16
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
Re: DLL schreiben
Verfasst: 25.12.2009 21:42
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);
}