Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Hogi

Trainee

  • "Hogi" is male
  • "Hogi" started this thread

Posts: 69

Date of registration: Oct 8th 2003

Location: Rinteln

1

Thursday, April 13th 2006, 12:46pm

java: key events *ohne* swing und awt

folgendes:

ich möchte ein java-programm schreiben, welches im hintergrund läuft während ich beispielsweise ein computerspiel spiele. dieses programm soll dabei auf tastatureingaben reagieren können, ohne jedoch den focus zu benötigen (es soll ja erstens ohne gui auskommen und zweitens soll das spiel den focus niemals verlieren....).

wenn ich die tasten über den inputstream einlese, dann müssen sie von dem standard input device, sprich von der konsole kommen, was ja nun nicht machbar ist (schließlich hat das spiel den focus).

am besten wäre es, wenn sowohl das spiel, als auch mein programm die eingaben bekommen.. irgendwie muss sich doch einstellen lassen, welche eingaben wohin weitergeleitet werden...

hyperion

Erfahrener Schreiberling

  • "hyperion" is male

Posts: 422

Date of registration: Oct 8th 2004

2

Thursday, April 13th 2006, 1:23pm

Muss das mit Java sein? Für solche Sachen eigenet sich Java nicht so ganz gut.

Für solche Sachen musst Du Dich (ich denke, Du willst das ganze unter Windows erreichen) in die API einlesen und einen KeyHook (oder so ähnlich) erstellen, der bevor der Tastendruck unter Windows verarbeitet wird ausgelesen wird und sonst was damit angestellt wird.
"Der Klügere gibt nach! Eine traurige Wahrheit, sie begründet die Weltherrschaft der Dummheit." --Marie von Ebner-Eschenbach

kakTuZ

größtenteils harmlos

  • "kakTuZ" is male

Posts: 309

Date of registration: Oct 14th 2003

Location: Hannover

Occupation: Software Developer

3

Thursday, April 13th 2006, 1:47pm

Hi,
vielecht kann dir AutoHotkey weiterhelfen. Damit die gewünschten Tastekombinationen abfangen und dann Signale an dein Java Programm schicken -- hab aber zu wenig Ahnung davon, um dir hier ne Lösung anbieten zu können.
#! /bin/bash
yes 'arch is still the best'

ktm

Erfahrener Schreiberling

4

Thursday, April 13th 2006, 3:17pm

Hooks + Java != Spass. Aber wenn du es unbedingt auf die harte Tour machen willst, vlt hilft dir ja dieser Link weiter...

DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

5

Thursday, April 13th 2006, 5:04pm

Ganz frech einfach einen Poller sämtliche Eingaben aus dem Tastaturbuffer mitloggen lassen? Aber geht wahrscheinlich auch nicht mit Java...
EDIT: Mir ist eingefallen, dast ich soxas mal mit eelpii gemacht haeb... das Prpgramm ertetzt finfaci wahllos Benutzereingaben durch anderf Zeichen... oh, gfrade ist es an ;)

This post has been edited 1 times, last edit by "DrChaotica" (Apr 13th 2006, 5:14pm)


ktm

Erfahrener Schreiberling

6

Thursday, April 13th 2006, 5:35pm

Auch ne gute Methode. Erwischt man denn dabei wirklich alles, oder kann es passieren, dass einem dabei der Buffer gelegentlich quasi "vor der Nase wegverarbeitet" wird?
Sehe mir grade die Delphi/Hooks-Geschichten an, und die für globale Hooks anscheinend zwingend notwendige externe DLL kommt mir nicht sehr elegant vor

This post has been edited 1 times, last edit by "ktm" (Apr 13th 2006, 5:37pm)


DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

7

Thursday, April 13th 2006, 6:19pm

Quoted

Original von ktm
Auch ne gute Methode. Erwischt man denn dabei wirklich alles, oder kann es passieren, dass einem dabei der Buffer gelegentlich quasi "vor der Nase wegverarbeitet" wird?

Ja, das passiert leider von Zeit zu Zeit. Lasse ich z.B. eine Taste ständig gedrückt, wird mir durchschnittlich jedes 15. Zeichen (ca.) weggeschnappt....

Quoted


Sehe mir grade die Delphi/Hooks-Geschichten an, und die für globale Hooks anscheinend zwingend notwendige externe DLL kommt mir nicht sehr elegant vor

Mag sein, kannst ja aber auch DX dazu verwenden, dies sollte mit WinXP eh installiert sein...elegant ist das aber auch nicht, sondern eine ziemliche Sauerei. Kein Programm sollte fremde Eingaben auslesen oder gar manipulieren, ohne dazu autorisiert worden zu sein ;)

Hogi

Trainee

  • "Hogi" is male
  • "Hogi" started this thread

Posts: 69

Date of registration: Oct 8th 2003

Location: Rinteln

8

Friday, April 14th 2006, 1:27pm

danke für die tips... ich glaube, ich habe eine lösung gefunden: http://www.jniwrapper.com/pages/winpack/demo

ich habe es halt noch nicht ausprobiert, aber es sieht sehr vielversprechend aus, dieses JNIWrapper scheint mir ziemlich mächtig zu sein.... seht euch unbedingt diese demo an!


ich habe noch an anderer stelle etwas gelesen, wo so ein hackerfreak behauptet hat, dass es auch ohne .dll möglich ist, einen keyhook mit java zu realisieren, aber die ganzen dateien, die er anbot, kamen mir... verdächtig vor (oder was würdet ihr tun, wenn ihr eine .rar-datei ladet, in der es nur eine datei namens INSTALL.EXE gibt?)

This post has been edited 1 times, last edit by "Hogi" (Apr 14th 2006, 1:28pm)


smeyer82

Alter Hase

  • "smeyer82" is male

Posts: 372

Date of registration: Oct 14th 2002

Location: Ex-Kanzlerstadt Hannover

9

Friday, April 14th 2006, 2:00pm

Quoted

Original von Hogi
(oder was würdet ihr tun, wenn ihr eine .rar-datei ladet, in der es nur eine datei namens INSTALL.EXE gibt?)


In einer virtuellen Maschine ausführen?
"Sir! We are surrounded!" - "Excellent! We can attack in any direction!"

maffe

Unregistered

10

Friday, April 14th 2006, 2:22pm

Quoted

Original von Hogi
(oder was würdet ihr tun, wenn ihr eine .rar-datei ladet, in der es nur eine datei namens INSTALL.EXE gibt?)

Schauen, ob das nur ein selbstextrahierendes Archiv ist und das dann ggf. mit eigenem Packer entpacken.

DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

11

Friday, April 14th 2006, 2:58pm

Quoted

Original von Hogi

danke für die tips... ich glaube, ich habe eine lösung gefunden: http://www.jniwrapper.com/pages/winpack/demo

ich habe es halt noch nicht ausprobiert, aber es sieht sehr vielversprechend aus, dieses JNIWrapper scheint mir ziemlich mächtig zu sein.... seht euch unbedingt diese demo an!

Ja, das tut es garantiert. Nur ist es wahrscheinlich eine ziemlich teure Angelegenheit, gemessen daran welch geringe Funktionalität Du davon eigentlich nur brauchst:

Quoted

Die FAQ
1. What is the price of the WinPack library?
Answer: WinPack is a free additional library for JNIWrapper.

Preise: http://www.jniwrapper.com/pages/sales/pricing

Quoted

Original von smeyer82

Quoted

Original von Hogi
(oder was würdet ihr tun, wenn ihr eine .rar-datei ladet, in der es nur eine datei namens INSTALL.EXE gibt?)

In einer virtuellen Maschine ausführen?

Das ist ja interessant, für welche Systeme gibt es sowas denn schon und was kann man damit alles anstellen? Funktioniert das wirklich, kommt man aus der virtuellen Maschine nicht aus ihrem Ressourcenbereich heraus?

hyperion

Erfahrener Schreiberling

  • "hyperion" is male

Posts: 422

Date of registration: Oct 8th 2004

12

Friday, April 14th 2006, 5:28pm

Sollte doch alles mit Xen oder Userland Linux machbar sein. Xen ist für .exe Dateien warscheinlich besser geeigenet. Andererseits kannst Du ja auch erstmal mit einer Linux Live CD mit Wine die .exe ausprobieren.
"Der Klügere gibt nach! Eine traurige Wahrheit, sie begründet die Weltherrschaft der Dummheit." --Marie von Ebner-Eschenbach

smeyer82

Alter Hase

  • "smeyer82" is male

Posts: 372

Date of registration: Oct 14th 2002

Location: Ex-Kanzlerstadt Hannover

13

Friday, April 14th 2006, 5:46pm

Oder du lädts dir von vmware den neuerdings kostenlosen VMWare Server runter.

Der läuft unter Win und Linux und ist (meiner Meinung nach) benutzerfreundlicher als Xen.

Und installieren kann man da drin eigentlich alles, was auch auf einem normalen PC läuft.
"Sir! We are surrounded!" - "Excellent! We can attack in any direction!"

Rick

Mädchen

  • "Rick" is male

Posts: 1,266

Date of registration: Mar 17th 2004

Location: ::1/128

Occupation: Forentroll

14

Friday, April 14th 2006, 10:58pm

Oh, und von wegen der originalen Frage:

Ich habe etwas ähnlchies vor langer zeit mal so gelöst:

Ich wollte mit meine damaligen mp3 player sonique vor und zurück springen können in der playlist ohne focus zu haben, dafür habe ich zwei maustasten mit tastaturshortcuts belegt.

Diese tastaturshortcuts habe ich dann auf desktopverlnüpfungen gelegt.

diese verknüpfungen haben dann sonique mit dem entsprechenden kommandozeilen parameter aufgerufen.

hätte sonique nicht so furchtbare memory leaks gehabt hätte ich es so weiterbenutzt, aber leider musste ich wegwechseln, und foobar 2k kann es nicht.

tuniac kann es zwar, aber ist auch nicht so toll wie f2k.

Also nochmal zum mitschreiben: .lnk auf dem desktop anlegen, diesen mit tastaturshortcut belegen und auf das entsprechende kommando verweisen. wenn das kommando nicht dazu führt, dass der fokus geklaut wird, dann wird der fokus nicht geklaut, und es funktioniert.
auch aus 3d applikationen heraus zum beispiel.

Sometimes you've got to ask yourself: Is xkcd shitty today?

This post has been edited 1 times, last edit by "Rick" (Apr 14th 2006, 10:58pm)