Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Verständnisprobleme mit SendMessage und VirtualAllocEx (https://www.delphipraxis.net/133842-verstaendnisprobleme-mit-sendmessage-und-virtualallocex.html)

zero_x 10. Mai 2009 15:30


Verständnisprobleme mit SendMessage und VirtualAllocEx
 
Hallo Leute,

ich habe ein Verständnisproblem mit der SendMessage- und VirtualAllocEx-Funktion. Mein Vorhaben ist die Reihenfolge der Buttons in der Taskbar zu verändern und die Texte der Buttons auszulesen. Dazu habe ich hier ein Codebeispiel gefunden, wie man das umsetzen kann: http://www.delphipraxis.net/internal...=713216#713216 . Hier zu habe ich einige Fragen:
  • Warum wurde in dem Beispiel zweimal Speicher allokiert und wieder freigegeben?
  • Warum wurde im zweiten Codeausschnitt die SendMessage-Funktion(46. Zeile) verwendet bzw. warum funktioniert es ohne SendMessage nicht? Wenn man sich im Debugger die Werte anschaut, bleibt alles gleich. Warum?
  • In diesem Beispiel ist ein Typ "TExtraData" deklariert. Woher weiß man, wie der Typ aufgebaut ist?
  • Warum ist ist Buffer $1000 groß?
  • Wie kann man weitere Informationen(z.B. Text oder das Icon) über der Toolbar-Buttons herausfinden?

zero_x :wall:

quendolineDD 10. Mai 2009 15:39

Re: Verständnisprobleme mit SendMessage und VirtualAllocEx
 
Eigentlich nur eine Frage pro Thread, damit die Suchfunktion auch nutzbar bleibt.
Zitat:

Wie kann man weitere Informationen(z.B. Text oder das Icon) über der Toolbar-Buttons herausfinden?
Dafür bitte einen neuen Thread.

Zitat:

Warum ist ist Buffer $1000 groß?
$1000(hex)= 4096 Bit = 4 Byte.
Zitat:

Pointer to the TBBUTTON structure that receives the button information.
Es wird ein Pointer abgespeichert, und dieser ist ein 32Bit integer. Daher nur 4Byte.

Zitat:

Warum wurde in dem Beispiel zweimal Speicher allokiert und wieder freigegeben?
Einmal wird Speicher für das Abspeichern der Koordinaten der Maus beim Klicken im fremden Prozess gebraucht und mit SendMessage wird geklickt. Wenn dort ein Button ist, dann kommt ein Handle zurück. Wenn auf einen Button geklickt wird, wird der alte Speicher frei gemacht und dann neuer Speicher für o.g. angefordert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr.

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