Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pchar := @Funktion zuweisen (https://www.delphipraxis.net/146201-pchar-%3D-%40funktion-zuweisen.html)

thepaine91 15. Jan 2010 12:13


Pchar := @Funktion zuweisen
 
Hi,

ich versuche atm vergeblich folgendes:

Delphi-Quellcode:
function EnumWindowsProc(wHandle: HWND; apphandle: Cardinal): Bool; stdcall; export;

EnumWindows(@EnumWindowsProc, Application.Handle); // Fehler: Variable erforderlich
Also wenn ich EnumWindowsProc auslagern würde in eine Dll klappt es das weis ich aber ist mir eigetnlich zu umständlich bzw. unpraktisch wegen einer funktion eine Dll zu laden etc...


stehe gerade total auf dem Schlauch und weis einfach nicht weiter kann mir vielleicht jemand Helfen? ;)

DeddyH 15. Jan 2010 12:25

Re: Pchar := @Funktion zuweisen
 
Ehrlich gesagt verstehe ich das Problem nicht :gruebel:. Zeig doch mal etwas mehr Code oder versuch es mit
Delphi-Quellcode:
if EnumWindows(@EnumWindowsProc, Application.Handle) then
IIRC gab es eine Einstellung, dass Funktionsrückgabewerte Variablen zugewiesen werden müssen, hab aber vergessen, wie die hieß.

thepaine91 15. Jan 2010 12:48

Re: Pchar := @Funktion zuweisen
 
Delphi-Quellcode:
function EnumWindowsProc(wHandle: HWND; apphandle: Cardinal): Bool; stdcall; export;

procedure TForm1.Button4Click(Sender: TObject);
begin
  RichEdit1.Clear;
  EnumWindows( {@EnumWindowsProc}, Application.Handle);  // keine Variable
end;

function TForm1.EnumWindowsProc(wHandle: HWND; apphandle: Cardinal): Bool;
begin
  Result := True;
  PostMessage(apphandle, WM_USER+33, wHandle, 0);
end;
Und EnumWindows erwartet als 1. Parameter: (WNDENUMPROC lpEnumFunc, // pointer to callback function).
Nur bekomm ich es nicht hin den Pointer zu übergeben mehr nicht. Wie gesagt steh dies bezüglich auf der Leitung. ;)

Uwe Raabe 15. Jan 2010 13:06

Re: Pchar := @Funktion zuweisen
 
EnumWindowsProc darf keine Objektmethode sein, sonst passt die Signatur nicht. Du kannst die Funktion genau wie in der DLL deklarieren und nur das "export;" weglassen.

thepaine91 15. Jan 2010 14:38

Re: Pchar := @Funktion zuweisen
 
Genau hab die Funktions deklaration angepasst und funktioniert. Danke für die Hilfe. ;) Stand einfach auf der Leitung. :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz