Delphi-Quellcode:
function TMC_Plugins.Add: TMC_Plugin;
begin
Result := inherited Add as TMC_Plugin;
end;
Was da nun weiß ich nicht aber ich denke mal es wird eines zurück geliefert.
Generelle Frage, ist denn der Part der bei mir die
AV auslöst denn soweit in Ordnung?
Das hat mir im Moment wieder die Lust auf mein MediaCenter verdorben, das ich schon wieder an sowas kleinem scheiter...
Die gemeinsame
Unit
Delphi-Quellcode:
type
TPlugData = packed record
PluginType: Integer;
PluginCanConfig: Boolean;
PluginName: PChar;
PluginAuthor: PChar;
PluginVersion: PChar;
end;
TPPlugData = ^TPlugData;
type
TPluginData = procedure(PPlugData: TPPlugData); stdcall;
Meine Main App
Delphi-Quellcode:
[...]
Lib: THandle
PluginData: TPluginData;
[...]
procedure TForm1.Btn_LoadClick(Sender: TObject);
begin
if Opendialog.Execute then begin
Lib := LoadLibrary(PChar(OpenDialog.FileName));
if Lib = 0 then
ShowMessage('Plugin konnte nicht geladen werden!');
@PluginData := GetProcAddress(Lib, 'PluginData');
PluginData(@PlugData);
[...]
In der
DLL
Delphi-Quellcode:
[...]
procedure PluginData(PPlugData: TPPlugData);
begin
PPlugData^.PluginType := INIT_READ;
PPlugData^.PluginCanConfig := True;
PPlugData^.PluginName := 'Media Center TestPlugin';
PPlugData^.PluginAuthor := 'dsn';
PPlugData^.PluginVersion := '1.0.0';
end;
[...]
exports
SetCallBack, ReceiveData, Start, Stop, Configure, PluginData;