Tastendruck simulieren | SendKeys

Status
Nicht offen für weitere Antworten.

Hutmacher

Bekanntes Mitglied
In VB.NET gibt es die SendKeys-Methode, die einen Tastaturanschlag simuliert.

Für ein kleines Spaßprogramm für die übermorgige LAN wollte ich ein kleines Programm erstellen, welches alle 5 Minuten die Windows-taste drückt ^^

Aber wie realisiere ich, dass der Druck simuliert wird?

PS: Gibt es in Java irgendwie einen JTimer? ;P
 
In VB.NET gibt es die SendKeys-Methode, die einen Tastaturanschlag simuliert.
In java instanziiere man ein exemplar der Klasse Robot (einfach ein leerer Konstruktor, nichts zu beachten) und rufe dann die Methoden keyPress() und keyRelease() auf.

PS: Gibt es in Java irgendwie einen JTimer? ;P
Let me google that for you

Allerdings finde ich die Klasse irgendwie unnötig, mach einen stinknormalen Thread der alle fünf Minuten auf diese komische Taste drückt, und gut ist.

[edit] Ich sehe: man kann's auch anders sehen^^
optimal natürlich
Quartz - Quartz Overview
..aber wenig heftig für dein vorhaben
[/edit]
Übrigens: da java so BS-unabhängig ist.... Was ist da die "windows-taste" denn? ???:L
 
>Was ist da die "windows-taste" denn?

Bei mir heissen die: Super R und Super L ;-)

EDIT:
>Ich sehe: man kann's auch anders sehen^^

Sollte mehr eine Info sein, was es alles noch so gibt im grösseren Stil
 
Und wie mache ich einen Thread, der alle 5 Minuten reagiert?
(ich habe mir so eine vage Klasse erstellt :bahnhof🙂

Übrigens zum Robot ... nichts zu beachten?^^
crn3mf8a.jpg


Hierzu steht in der API:
Note that some platforms require special privileges or extensions to access low-level input control. If the current platform configuration does not allow input control, an AWTException will be thrown when trying to construct Robot objects.

Und was soll ich jetzt machen????:L


EDIT:
Um noch einen draufzusetzen:
mskajw28.jpg

Wieso geht das schon wieder nicht?
 
Zuletzt bearbeitet:
________________________________________________________________________________________
klicken.jpg

________________________________________________________________________

Noch nicht mal mit dem kapitel über Exceptions durch, aber erstmal mit Robots und Threads rumballern oder wie?:autsch:
 
Zuletzt bearbeitet:
Wtf >.<
Sorry, das kommt davon, wenn man X Seiten Theorie macht und dann proggt ...
Das heißt also, ich könnte gleich die ganze run-Methode in try-catch-Blöcke setzen ... verdammt, ich hasse die.

Der letztendlich funktionierende Code, falls es jemanden interessieren sollte, ist:
[HIGHLIGHT="Java"]import java.awt.Robot;
import java.awt.event.KeyEvent;

public class Main
{
public static void main(String[] args)
{
Thread t1 = new WindowsKeySenderThread(5000);
t1.start();
}
}

class WindowsKeySenderThread extends Thread
{
private static final short windowsTaste= KeyEvent.VK_WINDOWS; //Klassenvariablen
private int interval; //Instanzvariablen

WindowsKeySenderThread(int interval) //Konstruktor
{
this.interval = interval;
}

public void setInterval(int interval) //Setter & Getter
{
this.interval = interval;
}
public int getInterval()
{
return this.interval;
}

@Override
public void run()
{
try
{
Robot keySender = new Robot();
keySender.keyPress(windowsTaste);
keySender.keyRelease(windowsTaste);

sleep(this.getInterval());

run(); //Rekursive Wiederholung
}
catch (Exception e)
{
System.out.print(e);
}
}
}[/HIGHLIGHT]
 
Mach mal die "rekursive Wiederholung" weg und lieber ein while oder sowas drum. Sieht sehr funktional aus, aber Java hat keine Endrekur... ach egal, einfach weg.
Die Robot-Klasse hat übrigens ein eingebautes sleep. Das heißt da nur delay.
 
//Rekursive wiederholung
Ich mag deklarative/funktionale sprachen auch, aber sowas hat in java wirklich nichts verloren :noe: Meisten Compiler unterstützen wirklich keine Endrekursion, da hat musiKk vollkommen recht. Aber auch einfach nur weil man in Java mit solchen Stunts nicht rechnet, wäre es schon "schlechter codestil", der den sinn verschleiert.
 
frag mich nur warum man das auf ner LAN will ... hast bestimmt noch n Parameter den du auf deinem Rechner beim Aufruf mitgibst, der genau dann nicht diese Events triggern lässt .. und alle andern müssen sich damit rumschlagen ... als Tarnmantel steckst noch irgendne komische Funktionalität rein (Stoppuhr oder so ^^). Und immer wenn bei denen der Desktop aufblitzt, springst du um die Ecke und erledigst gemäß Gaming-Convention deine Widersacher, welche dann grad mal 5s still stehen ???:L😱

Wann das soweit ist, hörst ja dann aum Raunen im Raum :lol:
 
Zuletzt bearbeitet:
frag mich nur warum man das auf ner LAN will ... hast bestimmt noch n Parameter den du bei deinem Rechner beim aufruf mitgibst, der genau dann nicht diese Events triggern lässt .. und alle andern müssen sich damit rumschlagen ... als Tarnmantel steckst noch irgendne komische Funktionalität rein (Stoppuhr oder so ^^). Und immer wenn bei denen der Desktop aufblitzt, springst du um die Ecke und erledigst gemäß Gaming-Convention deine Widersacher, welche dann grad mal 5s still stehen?! :lol:
sowas ist schon extrem tödlich 😱 habe aus diesem grund früher immer diese verfluchten windows-tasten aus den tastaturen rausgerissen. Ebenso die "power"-taste, die ich mal auf einer tastatur hatte... War auch noch direkt neben der Screenshot-taste :autsch:
"Yuhu, ein glänzender Sieg, mach ich nochmal schnell ein Screenshot bevor das spiel zu ende ist"-...pc fährt runter...-"öhm? O_O "-...-"wtf? Ò_ó "

...schon gut mitgedacht, wer auch immer die tastatur entworfen hat :autsch:
 
Zuletzt bearbeitet:
jo hab bei mir auch gaaaaanz rechts oben nen "suspend"-knopf .. meist bin ich da beim getränk abstellen hängen geblieben .. blub rechner geht in standby 😱
fatal-fail 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben