Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String in byte Array (https://www.delphipraxis.net/145022-string-byte-array.html)

EWeiss 22. Dez 2009 04:57


String in byte Array
 
Ich möchte Testen warum in Xp WM_GETTEXT funktioniert und in Win7 nicht.
Es bietet sich an über SendMessageA/W den String als Bytearray ausgeben zu lassen.

Mein Problem bin nicht der Mathematiker :oops:
Kann mir jemand sagen wie das aussehen könnte ?

Die Enkodierung sollte hierbei in ANSI bzw in UTF-16 sein. (bietet sich D2009 an)
Nein es ist keine Hausaufgabe auch wenn es so aussieht.

Wäre schön wenn mir jemand dabei helfen könnte.

gruss Emil

Mithrandir 22. Dez 2009 07:55

Re: String in byte Array
 
Warum sollte WM_GETTEXT nicht funktionieren? :gruebel:

himitsu 22. Dez 2009 08:00

Re: String in byte Array
 
In/Ab D2009 kannst du ganz einfach TEncoding für diese Convertierung nutzen.

Ansonsten kann man es sich in vielen Threads angucken.

PS: Wozu erst umwandelnt?
Ob du nun per Sendmessage einen Zeiger auf ein ByteArray oder auf einen String (UnicodeString) versendest, ist doch egal, da der Empfänger eh nur den Zeiger empfängt und somit der ursprüngliche Typ egal ist.

PSS: SendMessage und Zeiger gehen direkt nur prozessintern, da ein anderes Programm einen eigenen Speicherbereich hat. (OK, ReadProcessMemory und WM_COPYDATA bringen Abhilfe, aber auch hier ist der Ursprungstyp egal)

EWeiss 22. Dez 2009 08:08

Re: String in byte Array
 
Zitat:

Zitat von Daniel G
Warum sollte WM_GETTEXT nicht funktionieren? :gruebel:

Weil ich mit der gleichen Funktion unter XP in meinen Caption den Songtitel angezeigt bekomme
und unter Windows 7 das nicht funktioniert.

In XP arbeitet die Winproc WM_GETTEXTLENGTH ab und in Windows 7 springt er gar nicht erst rein.

gruss Emil

EWeiss 22. Dez 2009 08:10

Re: String in byte Array
 
@himitsu

Zitat:

somit der ursprüngliche Typ egal ist.
Ich möchte aber genau sehen was da ab geht.
Spy++ oder Winspector zeigen mir keine strings an daher kann ich nicht genau prüfen was nun ankommt.

gruss Emil

himitsu 22. Dez 2009 09:01

Re: String in byte Array
 
Zitat:

Zitat von EWeiss
Ich möchte aber genau sehen was da ab geht.
Spy++ oder Winspector zeigen mir keine strings an daher kann ich nicht genau prüfen was nun ankommt

Da bringt aber eine Typumwandlung nichts, da ja der Inhalt gleich bleibt und sich somit an dieser Situation nichts ändern würde :zwinker:

PS: prozessübergreifendes SendMessage/PostMessage geht seit Vista etwas schwerer/garnicht mehr, da man dort nicht einfach so jedem Prozess etwas senden darf ... hier kommt es drauf an, daß man dafür dann auch die nötigen Rechte hat.

z.B. darf ein Prozeß mit "billigen" Benutzerrechten keinem Admin-Prozeß etwas schicken.
ist zumbeispiel bemerkbar, wenn man vom Explorer (ohne Adminrechte) seinem Programm mit Adminrechten via Drag&Drop Dateien zuschieben will. :wall:

EWeiss 22. Dez 2009 10:07

Re: String in byte Array
 
Zitat:

z.B. darf ein Prozeß mit "billigen" Benutzerrechten keinem Admin-Prozeß etwas schicken.
ist zumbeispiel bemerkbar, wenn man vom Explorer (ohne Adminrechte) seinem Programm mit Adminrechten via Drag&Drop Dateien zuschieben will
In wie weit das sinn macht ? ;)
Aber gut generell funktioniert die WM_GETTEXT Message ansonsten würde ich ja in den Plugins keine Titel angezeigt bekommen.
Sie hat halt nur keine auswirkung mehr auf das Caption.

Denke das dies in Win7 geblockt wird warum auch immer.

gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 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