Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Taste an externe Anwendung (Java) senden - problem (https://www.delphipraxis.net/104948-taste-externe-anwendung-java-senden-problem.html)

ddcool 13. Dez 2007 09:42


Taste an externe Anwendung (Java) senden - problem
 
Hallo zusammen,

ich habe da mal wieder ein kleines Problem. Ich möchte gerne einen bestimmten Text in ein Edit im Java-Applet senden und danach im Edit ein VK_RETURN simulieren. Das mit dem Text habe ich folgendermaßen gelöst. Ich habe mir das Handle von dem Java-Fenster geholt und dann das Handle von dem Edit und habe dann per SendMessage ein WM_SETTEXT an das Edti gesendet. Wunderbar funktioniert. Wenn ich jetzt aber per WM_KEYDOWN + WM_KEYUP oder WM_CHAR ein VK_RETURN an das Edit sende, funktioniert es nur wenn der Focus auch im Edit drin ist, sobal der Focus auf einem anderen Fenster oder das Java-Fenster minimiert ist, funktioniert das ganze nicht mehr.
Nun zu meiner Frage:

Ist es möglich es so hinzubekommen, dass das VK_RETURN auch bei minimiertem oder nicht fokusiertem Fenster gesendet wird bzw "greift" ?
Und warum funktioniert WM_SETTEXT ohne Fokus?

Es gab hier und in anderen Foren schon häufiger solche anstöße aber leider ohne Lösung. Vielleicht weiss es ja jetzt wer.

Danke für Eure Hilfe & Grüße

ddcool

ddcool 15. Dez 2007 16:52

Re: Taste an externe Anwendung (Java) senden - problem
 
*push* Sorry! Hoffentlich weiß es wenigstens jemand.

ddcool 5. Mär 2008 12:38

Re: Taste an externe Anwendung (Java) senden - problem
 
*push* die zweite. Irgendwer muss doch nen tipp haben.

QuickAndDirty 5. Mär 2008 13:28

Re: Taste an externe Anwendung (Java) senden - problem
 
Ich weiß nicht wie das bei Applets ist. Aber bei Swing Anwendungen Scheitern Solche Sachen daran das über den angezeigt "Controls"
eine durchsichtige Komponente liegt die die Maus Interaktion captured und eigenständig verteilt.

Bei Applets wird da immer AWT genutzt?
Müste doch Eigentlich auch in Swing oder SWT gehen ?
Wenn das also ein Swing Applett ist dann könnt es an dem Aufbau von Swing liegen.

ddcool 5. Mär 2008 13:43

Re: Taste an externe Anwendung (Java) senden - problem
 
Sorry, bitte was? :-) Swing ist für mich eher eine Musikrichtung.
Hättest du für mich ein Codebeispiel. Ich weiss, dass es ein Applet ist. Aber mit Java kenne ich mich halt nicht wirklich aus.
Vielleicht hilft es dir, wenn ich dir sage, dass es für knuddels ist.

Medium 5. Mär 2008 14:28

Re: Taste an externe Anwendung (Java) senden - problem
 
Das Problem ist, dass Java keine Controls im Sinne von Windows verwendet - prinzipbedingt durch die VM. Lediglich (bei Anwendungen zumindest) das Fenster ist ein Windows-Control, aber alles darin sieht für das OS aus wie ein Bitmap. Wichtig ist dabei, dass dadurch keinerlei Handles existieren, denen man irgendwie etwas mitteilen könnte. Wenn also das Applet/Programm nicht eine Schnittstelle eingebaut hat, die Fernsteuereung möglich macht, ist dort imho kein Weg dranzukomen.

Bzw. einer würde mir einfallen: Screenshot machen, Aufbau des Applets kennen, Mausposition setzen, und dann Tastendrücke z.B. mit AsyncKeystate simulieren. Dabei kommt man ohne Messages an das Ziel aus, muss sich aber leisten eine grafische Interpretation der Anzeige zu machen. Der Aufwand ist nicht zu gering, je nach Komplexiät des Applets.

ddcool 5. Mär 2008 14:38

Re: Taste an externe Anwendung (Java) senden - problem
 
Ja Problem ist, ich möchte ja gerne auch Messages senden, wenn das Java-Fenster nicht sichtbar ist.
Das Handle bekomme ich ja ohne Probleme. Eine Text an das Edit senden geht auch, sogar bei minimiertem Fenster. Nur ein simpler Tastendruck geht nur, wenn der Fokus auf dem Edit ist.

QuickAndDirty 5. Mär 2008 14:41

Re: Taste an externe Anwendung (Java) senden - problem
 
Medium: Hat gerade die Funktionsweise der Swing-Komponenten beschrieben.
Man kann in Java auch Native komponenten benutzen leider nur sehr sehr wenige, eben das was in Linux und Win
gemeinsam vorhanden hist>>>also nur TextFeld, Button, Label...so einfaches zeug halt.

Dann kann man noch die SWT kompnenten verwenden das ist eine Bibliothek von IBM die scheint irgendwie ein gemisch von beidem zu sein
auf jeden Fall ist sie im Vergleich zu Swing schnell...
Sieh dir mal Eclipse an soweit ich weiß basiert das auf SWT.

Welche bibliothek nutzt Knuddles? Vermutlich SWING denn AWT bietet so rein garnichts...

Wenn das der Fall ist hast du einen schweren Stand.

Denn Swing besteht aus einem Fenster, mit 2 Schichten einer Darstellungsschicht (Bitmap) auf der die Komponentengezeichnet werden und darüber eine Glasspane welche alle Desktop Ereignisse abfängt und ins Swing System weiterreicht.


Vielleicht macht es für dich sin das Protokoll von knuddles zu analysieren und einen eigenen Client zu programmieren.

ddcool 5. Mär 2008 14:46

Re: Taste an externe Anwendung (Java) senden - problem
 
Heisst also auf gut deutsch: pech gehabt?
Mit Delphi also nicht zu realisieren? Wenn ja, dann aber bestimmt mit Java zu realisieren, wofür ich dann in einem anderen Forum fragen müsste.

QuickAndDirty 5. Mär 2008 15:14

Re: Taste an externe Anwendung (Java) senden - problem
 
Nein das geht auch in java nicht 100%.

Versuch mal mit einem der millionen frei verfügbaren packetsniffern herauszufinden was Knuddles
Da hin und herschickt, vielleicht ist es nur ein normaler IRC Standard chat. Dann hast du es einfach.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz