![]() |
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 |
Re: Taste an externe Anwendung (Java) senden - problem
*push* Sorry! Hoffentlich weiß es wenigstens jemand.
|
Re: Taste an externe Anwendung (Java) senden - problem
*push* die zweite. Irgendwer muss doch nen tipp haben.
|
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. |
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. |
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. |
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. |
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. |
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. |
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. |
Re: Taste an externe Anwendung (Java) senden - problem
Nee ist es nicht, das ganze ist verschlüsselt und iwie son eigenbau Protokoll.
Deswegen ja auch dieser weg. Nur ich dachte, dass müsste doch auch mit dem Tastendruck funktionieren, wenn es schon mit dem Text funktioniert. Wenn der Fokus im "Edit" des Applets ist, funktioniert ja auch beides, nur sobald der Fokus halt wo anders ist oder das Applet Fenster gar minimiert, funktioniert nur das mit dem Text jedoch kein Tastendruck. Also denke ich mal schon, dass es ja kein Problem ist, Messages an das Applet zu senden, jedoch ein Problem, dass einige nur dann verarbeitet werden, wenn der Fokus auf dem eigentlichen Objekt liegt. |
Re: Taste an externe Anwendung (Java) senden - problem
SWT ist imho von den Eclipse Entwicklern sogar selbst gebaut worden. Bei dem Framework wird versucht so viel wie möglich nativ dem OS zu entnehmen, ohne dabei zu unterscheidliche Darstellungen zu erhalten. Ein freudiges Mischmasch :)
Der Tastendruck soll vermutlich das "Enter" zum absenden sein, und das wird höchstwahrscheinlich ein Eventhandler erledigen. Da ist dann die Frage, wer genau diesen "intus" hat. Probier mal das Handle des Appletfensters, oder sogar des Browserfensters aus, und sende an diese dein Enter. Wenn es einen Button "abschicken" o.ä. gibt, wäre das ein weiterer Kandidat. |
Re: Taste an externe Anwendung (Java) senden - problem
Ja daran habe ich noch nicht gedacht. Einen Button gibt es zwar nicht, aber das mit dem Fensterhandle und so müsste ich nochmal probieren. Vorerst Danke!
|
Re: Taste an externe Anwendung (Java) senden - problem
@Medium:
Ja SWT ist von IBM extra für Eclipse entwickelt worden. IBM unterstützt ja seit einiger Zeit alle möglichen Offenen Softwareprojekte und soweit ich weiß wurde eclipse von IBM initiert. @ddcool: Verschlüsselt??? Du hast immerhin ein Chattfenster und du siehst was reingeht und was rausgeht!!! Du hast ein Skript(java Applett) und eine Dekompiler für Java und java läst sich sehr gut dekompilieren!!! (wenn kein Scrambler verwendet wurde) Ist es einfach MIME? |
Re: Taste an externe Anwendung (Java) senden - problem
Zitat:
|
Re: Taste an externe Anwendung (Java) senden - problem
Boah, du bist aber brutal :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
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