Bot Programmieren

fafrey

Mitglied
Hallo,

Ich würde gerne einen Bot programmieren der mir mein Berichtsheft ausfüllt :idea::lol:

nur weis ich nicht wie und mit was für befehlen und und und...
wollte hier mal nachfrage hab schon was von einer Robot Klasse gehört nur viel hilft mir das nicht und von Bots hab ich sowieso nicht so viel Ahnung :shock:

Bedanke mich schonmal für die antworten.
 
Du solltest schon genauere Angaben geben, was du genau willst.
Ist es ein Excel File das du ausfüllen willst,
gibt es ein extra Programm um das File zu erstellen
oder wie genau läuft das schreiben des Berichthefts normal ab?
 
AAAAAAAlso,

Das ist eine Tabelle in einem Word dokument,
die Zellen die ausgefüllt werden sollen sind die Angaben :

Tätigkeit,
Zeitaufwand für diese Tätigung,
Datum (immer 2 Wochen pro DINA4 Blatt)

sonst gibt es noch die Zellen die ich schon ausgefüllt habe und als Vorlage benutze da sich diese Werte (erstmal)nicht ändern

Ausbildungsjahr,
Abteilung,
Wochentage


MfG fafrey
 
Stimmt auch wieder.. ;( :bloed:

aber Datum und Ausbildungsnachweis kann ich mir doch eintragen lassen oder?
die Daten verändern sich zwar auch aber ist das Voraussehbar also müsste es doch gehen oder ?
 
Das kann man machen.

Es gibt 2 Möglichkeiten.

Die komplexere ist die mit den Robots, die du erwähnt hast.
Mit ihnen kannst du Tastendrücke, Mausbewegungen und Klicks generieren.
Dann müsstest du dir diese so generieren lassen, dass automatisch die Dateien geöffnet werden,
die Maus an die richtige Stelle fährt und dann etwas schreibt.
Beispiel: Robot Example

Die einfachere wäre, dass du dir das Dateiformat deines Files anschaust.
Öffne es mit dem Editor oder Notepad++.
So kannst du nämlich das File in dein Programm einlesen und an der gewünschten Stelle eben das
Datum oder die Nummer einfügen.
Beispiel: Read File Example
 
Vielen dank für die Links hat mir schon sehr geholfen!

Bin jetzt soweit das das heutige Datum angegeben, in einen String gespeichert ist und der Robot funktioniert und einen Text ausgibt.


Java:
 import java.text.DateFormat;                                   // heutiges Datum
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.GregorianCalendar;


import java.awt.*;                                             //Robot
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.*;
import java.applet.Applet;

public class HiBudy3 extends Applet {
  
    
  public void init() {
    Panel cp = new Panel(null);
    cp.setBounds(0, 0, 300, 300);
    add(cp);
                            
    
    DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");  // heutiges Datum
    String str = dateFormat.format(new Date());
    
    try {                                                      //Robot
      Robot robot = new Robot();
      robot.delay(5000);
      robot.keyPress(KeyEvent.VK_H);                        
      robot.keyPress(KeyEvent.VK_I);
      robot.keyPress(KeyEvent.VK_SPACE);
      robot.keyPress(KeyEvent.VK_B);
      robot.keyPress(KeyEvent.VK_U);
      robot.keyPress(KeyEvent.VK_D);
      robot.keyPress(KeyEvent.VK_Y); 
    } catch(AWTException e) {
      e.printStackTrace();
    }    
  }
}


Edit: wie kann ich den String mit den keypress ausgeben lassen?
 
Zuletzt bearbeitet:
Nunja... du wirst dir eine Art Mapping anlegen müssen, das die einzelnen Chars des Strings
auf die passenden KeyEvents mappt.

sth like

Aufruf
Java:
		DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy"); // heutiges
																	// Datum
		String str = dateFormat.format(new Date());

		java.awt.Robot robot = new java.awt.Robot();
		robot.delay(500);
		for (Character zeichen : str.toCharArray()) {
			robot.keyPress(getEventForChar(zeichen));
		}

Methode
Java:
	private static int getEventForChar(Character zeichen) {
		switch (zeichen) {
		case 'a':
			return KeyEvent.VK_A;
		case 'b':
			return KeyEvent.VK_B;
		case 'c':
			return KeyEvent.VK_C;
			// ...
		case '0':
			return KeyEvent.VK_0;
		case '1':
			return KeyEvent.VK_1;
		case '2':
			return KeyEvent.VK_2;
			// ...
		case '.':
			return KeyEvent.VK_PERIOD;
		case ',':
			return KeyEvent.VK_COMMA;
			// ...
		default:
			return -1;
		}
	}
 
There are now better ways to read from a file in Java for your question. You can use java.nio.file.Files.readAllBytes () which is faster than BufferedReader that Anti-Hero posted:

Java:
 import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class ReadFile_Files_ReadAllBytes {
  public static void main (String [] pArgs) throws IOException {
    String fileName = "c: \\ temp \\ sample-10KB.txt";
    File file = new File (fileName);

    byte [] fileBytes = Files.readAllBytes (file.toPath ());
    char singleChar;
    for (byte b: fileBytes) {
      singleChar = (char) b;
      System.out.print (singleChar);
    }
  }
}
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben