Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#12

AW: lpfnHook absturz als eigenständige exe

  Alt 1. Okt 2016, 06:24
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

Geändert von EWeiss ( 1. Okt 2016 um 07:26 Uhr)
  Mit Zitat antworten Zitat