Wird irgendeine Heap/Stack-Corruption sein. Irgendwo eventuell die stdcall
Calling-Convention vergessen?
Ahhh wäre eine alternative werde das nochmal prüfen.
Danke.
EDIT:
Geprüft und tatsächlich ja.
Löst aber nicht mein Problem.
Öffentliche
API. "SKAeroAPI" (Stellt den Eingang über den Ausgang der
DLL bereit.)
Delphi-Quellcode:
function SKAERO_OpenSaveFileDialog(SkinConfig: string; ParentHandle: THandle;
const DefExt, Filter, InitialDir, Title: WideString; var FileName: WideString;
IsOpenDialog: boolean): boolean; stdcall; external dllfile;
Aufruf.
Delphi-Quellcode:
if SKAERO_OpenSaveFileDialog(DefSkin, WinHandle, '.mp3',
'Mp3 Files (*.MP3|*.mp3', ParamStr(0),
' Open Media File', MainApp.Newfile, True) then
begin
if MainApp.Newfile <> '' then
MainApp.SampleAudioStream(MainApp.Newfile);
end;
Weiterleitung über meine Master
Unit in der alle Exports verwaltet werden.
Die Rückgabe erfolgt dann von hier.
Delphi-Quellcode:
function SKAERO_OpenSaveFileDialog(SkinConfig: string; ParentHandle: THandle; const DefExt, Filter, InitialDir,
Title: WideString; var FileName: WideString; IsOpenDialog: Boolean): Boolean; stdcall;
begin
result := OpenSaveFileDialog(SkinConfig, ParentHandle, DefExt, Filter, InitialDir,
Title, FileName, IsOpenDialog);
end;
unit OpenFileDlg Verarbeitung der Funktionen
Global Im Header hier hatte ich stdcall vergessen.
Delphi-Quellcode:
function OpenSaveFileDialog(SkinConfig: string; ParentHandle: THandle; const DefExt, Filter,
InitialDir, Title: WideString; var FileName: WideString; IsOpenDialog: Boolean): Boolean; stdcall;
Das eigentliche Arbeitspferd
Auch hier stdcall vergessen
Delphi-Quellcode:
function OpenSaveFileDialog(SkinConfig: string; ParentHandle: THandle; const DefExt, Filter,
InitialDir, Title: WideString; var FileName: WideString; IsOpenDialog: Boolean): Boolean; stdcall;
var
ofn: TOpenFilename;
szFile: array [0 .. MAX_PATH] of Char;
begin
Result := False;
SkinConfigFile := SkinConfig; // Hier Krachts sobald aktiviert.
Der Aufruf in meiner OpenSaveFileNameHook function
Delphi-Quellcode:
CDN_INITDONE:
begin
//......
OpenDialog.PrepareWindow(DlgHandle, SkinConfigFile);
//.....
end;
Das war's
Auch mit stdcall es kracht als eigenständige EXE.
Ich muss mich verstecken das kann niemand mehr hören.
Lege ich anstelle von "SkinConfigFile" den Pfad Hardcoded an kein Absturz als EXE.
Ich hätte eine Lösung aber das behebt nicht das ursprüngliche Problem.
Ich möchte wissen warum ein einfacher String die Anwendung außerhalb der
IDE abstürzen lässt.
gruss