Autor Beitrag
fuser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 30.06.04 17:50 
Hallo!
Ich möchte einzelne Buchstaben von Delphi aus an andere Anwendungen schicken.
Versucht habe ich das mit sendmessage.

Leider funktioniert das nicht mit allen Anwendungen.
Ich habe es mit WM_PASTE und Routinen mit WM_KEYDOWN / WM_CHAR / WM_KEYUP versucht.

Zuerst habe ich eine aus C++ übersetzt, danach habe ich hier noch eine gefunden:
www.delphi-forum.de/...ighlight=sendmessage

Mit dem gleichen gemischten Ergebnis:

Bei Notepad funktioniert ALLES (Class: Edit).

Bei Word NICHTS (Class: _WwG)

Bei calc NICHTS (Class: Static)

Bei Excel in der Bearbeitungszeile: nur WM_PASTE (Class: EXCEL <)
Bei Excel auf dem Gitter: NICHTS (Class: EXCEL7).
Bei Excel im Gitter (nach Doppelklick) nur WM_PASTE (Class: EXCEL6).

Da bei Notepad alles klappt vermute ich 'mal,
in der Messageabfolge WM_KEYDOWN / WM_CHAR / WM_KEYUP fehlt noch etwas.
Ich weiss aber nicht was.

Oder lässt sich so etwas gar nicht "einheitlich" machen, sprich
eine Routine für Alle Programme bzw. Klassen?
Dass der Klassenname vom calc-Eingabefgeld Static heisst bedeutet wohl nichts gutes...

Über Tipps (auch ohne sendmessage) würde ich mich freuen,
ich weiss echt nicht, was ich jetzt noch versuchen soll.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 30.06.04 19:54 
Schaust du dir mal bitte diese Server-Komponenten an, die Delphi installiert. Da sind Sachen für die Kontaktaufnahme zu Word und Co. drin. Und hier im Forum findest du IMHO auch genug Beispiele: Suche in: Delphi-Forum, Delphi-Library WORD DELPHI, Suche in: Delphi-Forum, Delphi-Library EXCEL DELPHI
fuser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Do 01.07.04 09:07 
Hallo MathiasSimmack
Klar, mit den Serverkomponenten für Office ist das keine Sache.
Ich fürchte aber, das ist nicht die Lösung für mein Problem.
Das mit Excel und Word war nur ein Beispiel
(hab' die Threadüberschrift wohl schlecht gewählt..).
Die Routine soll für ALLE Programme funktionieren.

Der Hintergrund:
Das ganze soll ein "Tastaturersatz" werden.
Es geht um einen Behinderten, der derzeit ausschliesslich eine Kopfmaus benutzt.
Tastatur kann er nicht benutzen.
Dazu hat er derzeit eine Software, die eine Tastatur (und Wörter)
abbildet, die angeklickt werden und den Buchstaben an eine beliebige Anwendung sendet.
Das ist in seiner Situation aber nicht gerade ideal.
Das "Standardsystem" mit Kopfmaus und Klicken passt nicht so recht,
speziell Texteschreiben ist eine echte Gedultsprobe.

Deshalb hab' ich zusätzlich ein paar Schalter verteilt, mit denen es
besser gehen sollte (an das was er noch bewegen kann).

Hardware und Schnittstelle ist kein Problem, auch das richtige Handle
der Komponente (da wo der Text hin soll) bekomme ich zuverlässig.
Es klemmt alles (nur) noch am sendmessage.

Leider kann das irgendeine Komponente sein.
Und von irgend einem Programm oder Dialog (bei Dialogen klappt sendmessage).
Und da soll jetzt ein Buchstabe nach dem anderen rein...
fuser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Do 01.07.04 12:20 
Ich hab' die Lösung :D
Statt WM_KEYDOWN / WM_CHAR / WM_KEYUP einfach WM_IME_CHAR !!

Komisch dass das überall mit WM_KEYDOWN gemacht wird...
Hat da wohl 'mal jemand ein Source getippt
und das halbe Internet hat den einfach übernommen :nut:

Wie befürchtet will der Static vom calc nicht, aber der parent nimmt
WM_IME_CHAR und schreibt ihn brav ins static.
Ich sende jetzt halt an den parent wenn Class=Static.

Danke an alle die sich Zeit genommen haben