Wie kann ich mit Java eine Tastatureingabe simmulieren ?

Status
Nicht offen für weitere Antworten.

Vilsa

Mitglied
Hi Leute,

also bis jetzt habe ich immer nur die Tastatur abgefragt ob eine Eingabe erfolgt ist.
Wie kann ich aber simulieren, dass mein Programm z.B. all 10 min die Taste eins drückt.
Ich meine nicht damit das er nur eine schleife mit einem Zähler macht und dann die eins ausgibt. Ne so das der Computer denkt die Taste eins ist gedrückt worden.

Es wäre echt sehr lieb von euch mir da zu helfen.


Danke
 
Haa Danke

also so
public void keyPress(int VK_F9)

wäre es dann für F9 ?

Fett. Ist auch eine Geile Klasse die kann ja so tolle sachen 🙂
 
Bitte jetzt nicht lachen, aber könntest Du mir noch einmal helfen ?

Ich habe einfach mal schnell ein kleines Prog gemacht. Aber leider geht es nicht. Was mach ich denn falsch bei der Benutzung.

Danke

Code:
import java.awt.Robot.*;
public class test
{

  public static void main(String[] args)
   {
  int a=0,b=10000;
  double c;
  

  for (c=a;c<b;c++)
  {
    System.out.println (c);

  }
    a=a+1;
    public void keyPress(int VK_NUMPAD1);
    System.out.println ("jo es rennt");

  }
}
 
Äh - nicht ganz :lol:
Schau' dir mal die grundlegendsten Grundlagenbücher zu java an, die du finden kannst.
Code:
import java.awt.*;
import java.awt.event.*;

class RobotTest3
{
    public static void main(String args[])
    {
        new RobotTest3();
    }

    private Robot robot;

    public RobotTest3()
    {
        try
        {
            robot = new Robot();
            Runtime.getRuntime().exec("notepad.exe");
            Thread.sleep(1000);
            type("Mit GROSS und kleinschreibung");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    public void type(String string)
    {
        for (int i=0; i<string.length(); i++)
        {
            char c = string.charAt(i);
            int code = Character.toUpperCase(c);
            if (Character.isUpperCase(c))
            {
                robot.keyPress(KeyEvent.VK_SHIFT);
                robot.keyPress(code);
                robot.keyRelease(code);
                robot.keyRelease(KeyEvent.VK_SHIFT);
            }
            else
            {
                robot.keyPress(code);
                robot.keyRelease(code);
            }
        }
    }

}
 
Ja ich bin total durch den Wind jetzt ich habe es auch so versucht.

Code:
import java.awt.Robot.*;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class test
{

  public static void main(String[] args)
   {
  int a=0,b=10000;
  double c;

  

  for (c=a;c<b;c++)
  {
    System.out.println (c);

  }
    a=a+1;
    Robot r = new Robot();
    r.keyPress(KeyEvent.VK_A);
    System.out.println ("jo es rennt");

  }
}

Könnte mir bitte einer helfen.

Danke
 
ich möchte ja nur, dass er die Taste eins drükt. Ich möchte ja gerne verstehen wie das läuft mehr nicht.

dann macht er einen Fehler

public static void main(String[] args) throws Excpetion
1 error
 
Nicht

public static void main(String[] args) throws Excpetion

sondern

public static void main(String[] args) throws Exception
 
Ansonsten auch nochmal ein weiteres Beispiel:

Code:
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test{  
	
	
	public static void main( String[] args ){
		JFrame f = new JFrame("Fenster");
		JTextArea t = new JTextArea();
		
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.add(t);
		f.setSize(Toolkit.getDefaultToolkit().getScreenSize());
		f.setVisible(true);
		
		/*t.addKeyListener(new KeyAdapter(){
			public void keyPressed(KeyEvent e){
				System.out.println(e.getKeyCode());
			}
		});*/
		
		try{Robot rob = new Robot();
			Thread.sleep(2000);
			rob.keyPress(97);
		}
		catch(AWTException e){}
		catch(InterruptedException k){}
		
	}
}
 
Wenn man das normal machen möchte was müste man denn statt dessen
public static void main(String[] args) throws Exception
schreiben ?

Danke
 
try{...

// Code der die Exception werfen kann/wird

} catch (TralalaException e) {
// exceptionhandling....
e.printStackTrace();
}
 
Das Buch "Java ist auch eine Insel" kennst du? Da kann man online prima nachschlagen. Erspart hier und da einen Nachfrage im Forum.

- Alex
 
Da habe ich doch galtt noch eine Frage.

Ich habe es bis jetzt sehr uimständlich, dass er wieder zu einem Punkt im Programm springt.
Ich mache es mit einer do wihle schliefe und einem Merker.
Gibt es nicht so ein Befehl jump to 32 oder so. Damit er das immer wieder ausfüht ?


sowas wie das



Code:
2

import java.awt.Robot.*;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class test
{

  public static void main(String[] args)
   {
  int a=0,b=10000;
  double c;

 

  for (c=a;c<b;c++)
  {
    System.out.println (c);

  }
    a=a+1;
    Robot r = new Robot();
    r.keyPress(KeyEvent.VK_A);
    System.out.println ("jo es rennt");
   [color=darkred] Jump to12[/color]
  }
}

Danke
 
Ja das kenne ich und ich habe es auch runtergeladen @ home. Aber gerade weil das hier ein Forum ist für anfänger sollte ich doch für solche Fragen hier richtig sein.
 
Na und warum benutzt du das Buch dann nicht? Lesen bildet. Und wir sind ja nicht dazu da dir das lesen abzunehmen. Im Buch ist sowas Grundlegendes recht weit vorne erklärt wird.
Kannst ja mal nach "while" oder "for" suchen.

- Alex
 
Super Tip. Wenn Du meine Frage gelesen hättest, dann wüsstest Du, dass ich es so mache. Aber meine Frage ist ob es nicht noch einfacher geht ?
 
Nein, ein JUMP gibt es in Java nicht. Und das ist auch gut so. Und was sollte ein JUMP an der Stelle einfacher machen, was mit While oder For nicht schon einfach genug wäre?
 
GOTOs solltest du in jeder Hochsprache meiden
Wikipedia hat gesagt.:
1968 zeigte Edsger W. Dijkstra in seinem Aufsatz Go To Statement Considered Harmful (der Titel geht allerdings auf N. Wirth zurück), dass in einer strukturierten Programmiersprache der Goto-Befehl völlig entbehrlich ist. Diese Meinung wurde in der Programmierausbildung bald zum Dogma erhoben; in einigen Sprachen wie Java wurde bewusst überhaupt kein Goto-Befehl eingeführt (abgesehen von einem „gelabelten“ break – Schlüsselwort).
 
Es ist doch nur eine Frage, ob es ncoh was einfacheres als eine do while schleife gibt?

Sowas wie früher mit z.B. goto 10 das ist nur zum verdeutlichen.
 
Und ich verdeutliche jetzt zum zweiten mal dass es nix einfacheres gibt weil "while" und "for" auch schon easy genug sind und sogar noch vorteilhafter sind.

- Alex
 
Hallo,

nochmal was zu Label und Goto. Wer sich schon mal intensiver den Quellcode des Linuxkernels angeschaut hat, dem wird auffallen, dass dort häufiger Sprungbefehle benutzt werden.

Meist in der Form:

Code:
InitSomeThingA()
if errorCode != 0 Goto A;
InitSomeThingB()
if errorCode != 0 Goto B;
InitSomeThingC()
if errorCode != 0 Goto C;
InitSomeThingD()
if errorCode != 0 Goto D;
InitSomeThingE()
if errorCode != 0 Goto E;

Goto normal;

E:
destroyInitDObject();

D:
destroyInitCObject();

C:
destroyInitBObject();

B:
destroyInitAObject();

A:
return -1

normal:

//mache hier normal weiter

Das mal so als Hinweis. Diese Vorgehensweise erspart doppeltes Aufräumen von Objecten bei Fehlschlägen oder andere schwer zu lesende Verrenkungen.

bye Saxony
 
Jango hat gesagt.:
Hehe - dann ist wohl Linux ganz 'böse' geschrieben? ???:L

Hehe,

nein hierbei geht es im wesentlichen darum, dass man den Kernel nicht alleine Programmiert und sich somit andere schnellere durch solche Initprozesse hangeln können.

Am besten du schreibst oben genanntes mal um, ohne Verwendung Goto. Dann sieht man welches sich besser liest und welches nicht. 😉

bye Saxony
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben