Automatisieren

Status
Nicht offen für weitere Antworten.

virox

Mitglied
hi,

also ich hab eine windows client software mit der ich jeden tag die gleichen klicks ausführe um daten von einem server abzurufen... ist es möglich mit java diese klicks und das starten des programms irgendwie zu automatisieren?
 
G

Gelöschtes Mitglied 5909

Gast
prinzipiell nicht ohne JNI da die java app die events einer anderen app nicht mitbekommt, erst recht wenn der focus weg ist.

Wenn du die app aber auch über die Konsole laufen lassen kannst is es möglich die app über java zu starten und auch zu steuern.
(Process / ProcesssBuilder)

ansonsten wenn es sich um Daten die in einer db stecken handelt, warum nicht über jdbc die daten direkt holen?
 

musiKk

Top Contributor
Dass es eine DB ist, schreibt der OP ja nicht. Und obs direkten Zugriff ist, ist auch nicht bekannt.

Zum Automatisieren von Maus- und Tastaturevents sollte die Klasse Robot funktionieren.
 

virox

Mitglied
die anwendung ist nicht von mir... sie greift auf eine api zu und holt dann die daten ab diese werden umgewandelt und in eine mssql datei gespeichert, die bei mir auf dem rechner ist


PS: so wie ich das erkenne kann ich mit der robot javaclass die mouse ansteuern? also könnte ich mir so zeitgesteuert die anwendung starten und dann mit der klasse robot die mouse über die verschiedenen menus bewegen und draufklicken lassen... mhh das wäre eigentlich ne lösung um der täglichen stupiden arbeit zu entkommen :D :###

hey danke schonma für eure bisherigen antworten :wink:
 
G

Gelöschtes Mitglied 5909

Gast
wenn ich mich nicht täusch wird das aber dennoch nicht gehen, da dann das andere programm den focus hat und die java app nix mehr mitkriegt
 

diggaa1984

Top Contributor
ich kenn zwar keine programme die sowas machen, aber onlinerollenspieler nutzen diese gerne mal wenns darum geht handwerkliche sachen zu bauen, so über nacht, weil das is recht monotone arbeit. Der Punkt an der Sache, die Dinger sind in OnlineRollenspielen nicht erlaubt, und die Leute werden gebannt oder was auch immer, und soviele wie das manchmal betreiben glaube ich kaum, dass sie alle n eigenes Programm schreiben. Irgendwo gibts sowas also schon, aber hab da keine Erfahrungen mit.
 

musiKk

Top Contributor
Ist doch Wurscht, welche Anwendung den Fokus hat. Die Klasse Robot bewegt laut Dokumentation die Maus quasi physisch und kann Tasten auf Maus und Tastatur druecken und das ist das, was der OP will.
 

virox

Mitglied
moin ich nomma ^^

also ich habs hingekriegt, dass die anwendung von meinem java proggi gestartet wird und sich die maus bewegt und die menupunkte der anwendung klickt

allerdings habe ich das Problem, dass wenn ich das Programm verschiebe die Koordinaten sich nicht anpassen... da sie ja absolut zur Bildschirmauflösung sind... und es war eine nervige arbeit durch Probieren die entsprechenden Koordinaten herauszufinden.

Gibt es eine Möglichkeit die Koordinaten auszulesen? und die Koordinaten-Werte relativ zur geöffneten Anwendung zu machen? Also egal wo ich das Programm hinschiebe die Koordinaten sich anpassen...
 
S

SlaterB

Gast
die Position eines JFrames kannst du abfragen, falls das deine Frage ist

Code:
public class TestGUI
    extends JFrame
{

    public TestGUI()
        throws Exception
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(100, 300);
        setVisible(true);
        addComponentListener(new ComponentAdapter()
            {
                public void componentMoved(ComponentEvent e)
                {
                    System.out.println(getLocation());
                }
            });
    }

    public static void main(String[] args)
        throws Exception
    {
        new TestGUI();
    }
}
 

Marco13

Top Contributor
Wenn ich's richtig verstanden habe, ist die Anwendung keine Java-Anwendung. Der einzige Workaround, der mir da noch einfallen würde, wäre, einen Screenshot zu machen, und darin das Anwendungsfenster zu suchen :autsch: aber das kann auch beliebig kompliziert (oder unmöglich) werden.

Verschieb' die Anwendung einfach nicht :meld: :wink:
 

virox

Mitglied
ok danke aber das wird zu kompliziert für nen rookie mit den Screenshot xD

ne andere Frage...kann ich die Koordinaten des Mauscursors irgendwie auslesen. Also so das mir der lange Testprozess ersparen bleibt?

z.b. wenn ich mit der Maus über den Button Fetch in der Anwendung gehe, mir die X und Y Koordinaten in der Java Console angezeigt werden?
 
G

Gast

Gast
windows client und server.

Muß der Zugriff über diesen Windows Client laufen?

Gibt es evtl eine wsdl?

Mit Hilfe der wsdl, könnte recht schnell ein (Java)Client generiert werden, der dann als Grundlage zur Lösung deines Problems dienen kann.
 

didjitalist

Bekanntes Mitglied
Eine Schnittstellenbeschreibung für WebServices.

Die aktuelle Position des Mauscursors kann dir java.awt.MouseInfo liefern. Das Fenster mittels eines Screenshots wiederzufinden, ist allerdings nicht so dramatisch. Den Screenshot kann dir Robot liefern.
 

Saxony

Top Contributor
diggaa1984 hat gesagt.:
ich kenn zwar keine programme die sowas machen, aber onlinerollenspieler nutzen diese gerne mal wenns darum geht handwerkliche sachen zu bauen, so über nacht, weil das is recht monotone arbeit. Der Punkt an der Sache, die Dinger sind in OnlineRollenspielen nicht erlaubt, und die Leute werden gebannt oder was auch immer, und soviele wie das manchmal betreiben glaube ich kaum, dass sie alle n eigenes Programm schreiben. Irgendwo gibts sowas also schon, aber hab da keine Erfahrungen mit.

Was du meinst ist IngameScripting! Das funktioniert aber auch nur in Game. ;)
So zum Besipiel bei CS, die Beben Reihe oder auch WoW, wo man komplette Vorgänge, wie das nervige Angeln, automatisieren kann und somit seinen char über Nacht mal ordentlich im Angeln lvlt. ;)

bye Saxony
 

DP

Top Contributor
such mal nach clickbot etc. bei google. da gibt es fertige software die für dich automatisch klicken kann wie und wo du willst.
 

virox

Mitglied
danke für die Infos aber ich will JAVA lernen und das geht für mich nur mit learning by doing am besten :)

so neue Info ich hab es mittlerweile geschafft mir nen kleines Konsolentool (in JAVA) zu bauen welches mir alle paar Sekunden die Mauscursorposition anzeigt :)


Code:
package mi;

import java.awt.MouseInfo;

public class MouseCoords extends Thread
{

	private int x = 0;
	private int y = 0;
	
	public void getCoords()
	{
		x = MouseInfo.getPointerInfo().getLocation().x;
		y = MouseInfo.getPointerInfo().getLocation().y;
		
		System.out.println("X = "+x+" Y = "+y);
	}
	
	public void run()
	{
		while(true)
		{
			getCoords();
				
			try 
			{
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
		}//end while
	}
}


und die Hauptklasse :

Code:
package mi;


import java.awt.AWTException;
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.geom.Point2D;
import java.awt.MouseInfo; //Position des Mouscursors
import java.awt.PointerInfo;

/**
 * 
 */

/**
 * @author virox
 * @version 0.1
 * @since 2008.07.19
 */

/**
 * A Class which returns the mousecoords
 */
public class Minfo { //Klassennamen groß schreiben

	/**
	 * @param args
	 * @throws AWTException 
	 */
	public static void main(String[] args) throws AWTException {
		

		MouseCoords mouseCoords = new MouseCoords();
//		mouseCoords.start();
		
		mouseCoords.getCoords();
		
		
	}//end main

}


ist das sinnvoll mit dem Thread? oder sollte ich das lieber mit einer schleife die sich wiederholt lösen also ohne Thread?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben