Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Rückgabewert der Sendmessage funktion

  Alt 5. Jan 2007, 19:27
Also, wenn die Antwort nicht mehr 42 ist, dann können wir uns begraben

Schau dir mal was über virtuelle Adressräume an!
Kurze Einführung aus meinem leicht lückenhaften Lissen:
Prinzipiell bekommt, dein Prozess, den du startest von Windows 4GB virtuellen Adressraum. Das liegt einfach daran, dass man mit den 32Bit-Registern halt 4GB referenzieren kann = 2^32. (Das wird ja jetzt auch der große Unterschied zu 64-bit-Prozessoren)
Dabei ist es egal, ob du auch wirklich 4GB pro Prozess an Hardware zur Verfügung hast. Meistens brauchst du ja eh bloß ein par kB. Ausserdem nimmt dir windows von den 4GB gleich wieder 2GB weg und mapped da u.a. ein paar Windows API Funktionen rein, die du ja auch in deinem Adressraum brauchst.
Für all dies ist quasi die MMU (Memory-Managment Unit) zuständig. Die rechnet deine Adresse aus deinem Pointer ein eine reale Adresse im RAM oder in der Auslagerungsdatei (wobei da noch viel anderes passiert) um. Und da kannst du machen was du willst, die MMU gibt dir nie eine reale Adresse eines anderen Prozesses zurück. Du kannst zwar Windows fragen, weil Windows, kann das schon, aber das wäre in deinem Fall wie die Sache mit den Kanonen und Spatzen.

Jetzt könnt man zwar sagen, dass du deine DLL in deinem Prozess hast. Das ist durchaus möglich, aber dann könntest du ja auch mit globalen Variablen arbeiten. Ich nehme deshalb an, die DLL ist in einem anderen Prozess.

Also PChar funktioniert so nicht. Eine 42 sollte allerdings hervorragend funktionieren. Und ich sehe den Fehler grad nicht.



Wie ist denn die IPCMessageHandler in der WndProc registriert?

Edit: Und was willst du mit der Aufrufkonvention export erreichen?
  Mit Zitat antworten Zitat