Thema: Delphi anderes Programm beenden

Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: anderes Programm beenden

  Alt 21. Feb 2019, 11:41
Hallo zusammen,

ich hatte ein ähnliches Problem und mir den Codes aus Beitrag 7 (https://www.delphipraxis.net/272652-post7.html) "geklaut". Dieser hatte auch funktioniert, allerdings bekomme ich neuerdings eine Zugriffsverletzung im laufenden Programm bei
EnumWindows(@EnumWindowsProc, LPARAM(List));
Das Problem ist das hier:

Delphi-Quellcode:
procedure TTools.EscapeClick(Sender: TObject);
  function EnumWindowsProc(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
  begin
    TList(lParam).Add(Pointer(hWnd));
    Result := True;
  end;
Du kannst keine nested procedure als callback für eine API-Funktion verwenden, Du mußt die EnumWindowsProc aus der Methode herausnehmen und als eigenständige Funktion implementieren. Nested procedures erfordern einen besondere struktur des callstacks, damit sie auf die parameter und lokalen variabled der umgebenden Procedure zugreifen können. Damit sind sie nicht kompatibel mit einem API callback.
Peter Below
  Mit Zitat antworten Zitat