SendMessage

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

Beitragvon Mainframe » Freitag 14. Mai 2004, 14:51

Folgendes Problem:
Ich habe ein Programm mit Keyboard Hook und will darin eine Nachricht an das aktive Fenster schicken,
und zwar an die Stelle, an der der Cursor steht:

invoke GetFocus
mov hFocus,eax
invoke SendMessage, hFocus, WM_SETTEXT, 0, ADDR text

Es funktioniert wunderbar z.B. bei NOTEPAD, WORDPAD, EXCEL usw. Aber nicht bei WORD.
Ich habe auch schon versucht, aus der Zwischenablage mit WM_PASTE zu senden. Geht überall,
nur nicht bei WORD.
Kann mir jemand helfen ???
Mainframe
Newbie
 
Beiträge: 8
Registriert: Dienstag 6. April 2004, 14:42

Beitragvon Marwin » Freitag 14. Mai 2004, 16:40

Hm, kannst du denn die Nachricht an die Comboboxen von Word senden, oder kannst du nirgends in Word etwas per WM_SETTEXT erreichen?

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Mainframe » Freitag 14. Mai 2004, 22:21

Doch, das geht.
Nachrichten z.B. in das "Suchen-Fenster" kommen an.
Mf.
Mainframe
Newbie
 
Beiträge: 8
Registriert: Dienstag 6. April 2004, 14:42

Beitragvon Marwin » Freitag 14. Mai 2004, 22:58

Reagiert das "Textfenster" auf andere für z.B. Edit-Controls typische Nachrichten, wie z.B. WM_GETTEXT, WM_GETTEXTLENGTH uä.?
Wenn nicht, dann würde ich denken, dass Offices zugehörige Fensterprozedur diese Nachrichten nicht verarbeitet, sondern programmintern vielleicht eigene Nachrichten vereinbart wurden. Eins steht fest, das ist keine der vordefinierten Fensterklassen, oder sollte ich mich irren? [_[ :P

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Mainframe » Dienstag 18. Mai 2004, 12:32

Das Textfenster reagiert irgendwie auf gar nichts.

WM_GETTEXT war aber sehr aufschlussreich, mit GetFocus bekomme ich gar nicht das richtige Handle.
WM_GETTEXT liefert immer den Fenstertitel?!?!?

Mf
Mainframe
Newbie
 
Beiträge: 8
Registriert: Dienstag 6. April 2004, 14:42

Beitragvon Marwin » Mittwoch 19. Mai 2004, 09:45

Was WM_GETTEXT zurückliefert hängt immer von der entsprechenden Fensterklasse ab. Bei einem Buton ist es die Aufschrift, bei einer Combobox der Inhalt des Editfeldes, bei einer Edit-Control der Text, welcher enthalten ist, bei Programmfenstern ist es der Fenstertitel (bei Notepad also z.B. Unbenannt - Editor, zumindest unter WinXP). Es ist also recht unterschiedlich.
Woher weißt du, dass du nicht das richtige Fensterhandle erhältst? Hast du es zusätzlich mit dem Wert verglichen, welcher ein Spy zurückliefert?

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Mainframe » Mittwoch 19. Mai 2004, 10:01

Guten Morgen Marwin!

Das mit dem Handle war eigentlich nur eine Vermutung.
Aber, wieso kann ich in das "Text-Fenster" von WORD nichts reinschreiben ??
Ich bekomme auch mit WM_GETTEXTLENGTH Return-Code Null zurück.

Grüße aus dem sonnigen Stuttgart
Uli
Mainframe
Newbie
 
Beiträge: 8
Registriert: Dienstag 6. April 2004, 14:42

Beitragvon Marwin » Mittwoch 19. Mai 2004, 19:56

Hallo Uli,

wie vorher schon einmal erwähnt glaube ich, dass Microsoft eine eigene Fensterklasse für das Textfeld erzeugt hat (mit welcher aus der Perspektive der Programmierer sicher einfacher und effektiver gearbeitet werden kann). Diese reagiert nun nicht auf die Standardnachrichten, sondern (nur?) auf Word-interne Nachrichten.

Das Wetter ist heute bei uns etwas wechselhaft. Im Moment sieht es eher so aus, als ob es bald anfängt zu regnen.
:P Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland


Zurück zu Assembler

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron