Page 1 of 1

Πρόγραμμα σε Java

Posted: Mon Jul 31, 2006 12:45 pm
by mikros
Θα ήθελα να ρωτήσω ποσο ευκολο ειναι να δημιουργήσω ένα προγραμμα το οποιο θα μπορει να χειριζεται ορισμενα αλλα προγραμματα π.χ. firefox.
οι λειτουργίες που χρειάζομαι ειναι :
1) ανοιγμα toy firefox
2) open a page
3) enter a hot key
4) κλεισιμο του firefox

Ποια κεφαλαια της Java απαιτούνται;

Posted: Mon Jul 31, 2006 1:08 pm
by Einherjar
Είναι πολύ φλού αυτά που λες. Μπορεί να είναι από πολύ εύκολο έως μη εφικτό. Για να ανοίξεις (και να κλείσεις?) ένα πρόγραμμα χρησιμοποιείς το αντικείμενο Runtime της Java. Για τα 2,3 δε μπορώ να σκεφτώ κάτι (το 3 δε το πιάνω καθόλου).

Αυτό που θα σου πρότεινα θα ήταν να φτιάξεις ένα extention για τον firefox το οποίο θα ανοίγει ένα socket και θα "ακούει" για εντολές από άλλα προγράμματα που θα συνδέονται με αυτό και στη συνέχεια θα τις εκτελεί στον firefox.

Posted: Mon Jul 31, 2006 1:22 pm
by Tomahawk
Το 1,2,4 νομιζω τα πετυχαινεις με το Runtime.exec καθως και με μια URL κλαση ( δεν θυμαμαι ποια και που ειναι ) που μπορει να κανει κληση στο λειτουργικο να ανοιξει ενα link στον default browser.

Mαλλον Runtime.exec( cmd.exe /C start http://blahblahblah )

Or

org.jdesktop.jdic.desktop.Desktop.browse(java.net.URL)

Posted: Mon Jul 31, 2006 5:11 pm
by tsilochr
δεν το έχω δουλέψει αλλά το πιο πιθανό είναι το εξής:

- να βρεις με ποια κλάση της Java εκτελείς εντολές του λειτουργικού (απότι βλέπω τα παιδιά λένε την Runtime)
- στη συνέχεια να δεις τι command line ορίματα παίρνει το πρόγραμμα που θες να εκτελέσεις

o firefox για παράδειγμα παίρνει όρισμα το Url που θα ανοίξει. Κάνε start -> run- -> firefox.exe "www.aueb.gr" (αν έχεις ήδη ανοιχτό forefox θα ανοίξει νέο tab)

Posted: Mon Jul 31, 2006 8:49 pm
by mikros
Λοιπον τα 1,2,4 τα πέτυχα μέσω του runtime και του exec. To προβλημά μου είναι μόνο πως θα δημιουργήσω μέσα από τη java ένα key event το οποίο θα γίνεται listen απο άλλα προγράμματα. Αντι να πατάω εγώ το T π.χ. να πατιεται μόνο του απο τh java

Posted: Mon Jul 31, 2006 10:04 pm
by tsilochr
οκ το έψαξα λίγο στο web, δεν έχει τύχει να το κάνω ποτέ αλλά η λογική μάλλον είναι η παρακάτω:

Η κλήση της Runtime.exec() επιστρέφει αναφορά σε αντικείμενο τύπου Process που αναπαριστά μια διεργασία του λειτουργικού. Απότι βλέπω η τάξη Process χρησιμποποιείται για να ελέγξεις την διεργασία. Δες και τις μεθόδους που σου παρέχει, παρέχει τα ρεύματα για είσοδο/έξοδο δεδομένων προς/από την διεργασία και άλλα.

Φαντάζομαι ότι θα καταλήξεις να κάνεις κάτι του στυλ

Code: Select all

Process myProc = Runtime.getRuntime.exec("firefox.exe \"www.aueb.gr\"");

\\και στο χειρισμό πχ του Ctrl+T
\\ίσως δοκιμάσεις κάτι του στυλ
OutputStream outStr = myProc.getOutputStream(); //θες ouptutStream για να στείλεις data προς την διεργασία

ouStr.write('Ctrl+T'.σεΜορφήByte());
δες και τα Java Docs

Posted: Tue Aug 01, 2006 4:34 pm
by tsilochr
επειδή αυτό που είπα είναι και λίγο επιστημονική φαντασία, άμα καταφέρεις κάτι πες το κι από δω

Posted: Tue Aug 01, 2006 4:53 pm
by mikros
κοιτάω αυτό εδώ http://www.tbdev.net/index.php?showforum=35 username=ego.eimai password=delta1
αλλα μάλλον δεν πιανει... εκτος κανω κατι εγω λαθος...
το ιδιο ισχυει και για αυτο που προτεινες...
το θέμα είναι το action που θα γίνεται να μην γινεται listen μόνο εσωτερικά στο προγραμμα java αλλα σε ολα τα windows...