Wenn man sich anschaut was PB da macht:
Code: Alles auswählen
push eax
push dword_x
call TlsGetValue
mov edx, [eax]
pop eax
retnDas dumme ist nur - es wird nicht geprüft ob das Lesen überhaupt funktioniert hat!
Denn das kann bei Threads auch mal nicht funktionieren weil ein anderer Thread noch darauf zugreift.
Der zweite Versuch schlägt Fehl und im Register EAX ladet der Return NULL.
NULL weils eben nicht funktioniert hat. (siehe WINAPI Doku. zu TLS)
Und natürlich gibt es später einen Exception Fehler wenn man versucht von NULL zu lesen.
In deinem Fall kannst du den Fehler umgehen indem du z.B. folgendes machst:
Code: Alles auswählen
GetCursorPos_(@MausPosition.POINT)
SetGadgetText(#MausPosX, Str(MausPosition\x))
Delay(50)
SetGadgetText(#MausPosY, Str(MausPosition\y))
Delay(50)an der Stelle geben wir Windows nur etwas mehr Zeit den TLS wieder freizugeben.