Zitat von
gregorkleiber:
Hey leute.
Habe folgenden Code aus dem Internet, nur verstehe ich nicht, wieso er nicht funktioniert (den code kann ich teilweise nachverfolgen)...
Hi,
eine interessante Frage an dieser Stelle ist natürlich, wo Du Dich bereits schlau gemacht hast. Hast Du Dir denn mal die Methoden angeschaut? Wonach gesucht, was gefunden?
dwMessage := RegisterWindowMessage('{93C5B2B7-CE8D-439A-857B-4CC76F35C091}'); // HIER z.B. wieso diese Zeichenfolge?
Diese Zeichenkette ist eine UID (Unique ID). Diese Nummern werden i.d.R. im Zusammenhang mit
COM verwendet, eine solche Nummer soll weltweit eindeutig sein. Sie wird auf eine bestimmte Art und Weise berechnet und setzt sich aus der
IP-Adresse, Uhrzeit und ich glaube Seriennr von Windows zusammen. Eine solche Nummer kannst Du unter Delphi automatisch mittels STRG + ALT + G erzeugen.
In diesem Fall wird die Nummer benötigt, da Du eine neue Nachricht erstellst und natürlich möchtest, dass nur Dein Programm auf diese Nachricht reagiert. Da dieser String weltweit einzigartig ist, kannst Du also davon ausgehen, dass sich nicht versehentlich ein anderes Programm für die Nachricht interessiert.
Delphi-Quellcode:
dwAtom := GlobalAddAtom(PChar(paramstr(1))); //okay, variablen "global" anlegen
SendMessage(hWindow,dwMessage,0,dwAtom); // was genau wird hier übergeben ??
Was hier übergeben wird kannst Du im Windows-
API nachlesen. Der erste Parameter ist das
Handle, des Zielfensters. Der zweite gibt die ID der Nachricht an. Die beiden folgenden Parameter sind LParam und WParam, dass sind einfach Argumente, die Du übergeben möchtest. Der hier verwendete Typ kann für so ziemlich alles missbraucht werden. Das hier ein Atom verwendet wird, liegt am globalen Adressraum dieses Atom.
procedure TForm_Main.WndProc(var msg : TMessage); //WNDPROC ? window procedure ?
Ist die Procedur, die für die Behandlung von Nachrichten zuständig ist. Hier geht es um die prinzipielle Arbeitsweise von Windows. Sehr vereinfacht funktionieren Programme unter Windows so, dass sie in einer Endlosschleife auf Nachrichten warten. Geht eine Nachricht ein, wird diese irgendwie verarbeitet (durch diese Prozedur in Delphi) und dann wird die nächste Nachricht entnommen.
Gruß Der Unwissende