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

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
mikros
byte level
byte level
Posts: 127
Joined: Wed Nov 09, 2005 8:08 pm
Academic status: Alumnus/a
Gender:
Location: somewhere in the world
Contact:

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

Post by mikros » Mon Jul 31, 2006 12:45 pm

Θα ήθελα να ρωτήσω ποσο ευκολο ειναι να δημιουργήσω ένα προγραμμα το οποιο θα μπορει να χειριζεται ορισμενα αλλα προγραμματα π.χ. firefox.
οι λειτουργίες που χρειάζομαι ειναι :
1) ανοιγμα toy firefox
2) open a page
3) enter a hot key
4) κλεισιμο του firefox

Ποια κεφαλαια της Java απαιτούνται;
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Mon Jul 31, 2006 1:08 pm

Είναι πολύ φλού αυτά που λες. Μπορεί να είναι από πολύ εύκολο έως μη εφικτό. Για να ανοίξεις (και να κλείσεις?) ένα πρόγραμμα χρησιμοποιείς το αντικείμενο Runtime της Java. Για τα 2,3 δε μπορώ να σκεφτώ κάτι (το 3 δε το πιάνω καθόλου).

Αυτό που θα σου πρότεινα θα ήταν να φτιάξεις ένα extention για τον firefox το οποίο θα ανοίγει ένα socket και θα "ακούει" για εντολές από άλλα προγράμματα που θα συνδέονται με αυτό και στη συνέχεια θα τις εκτελεί στον firefox.
[Better to understand a little than to misunderstand a lot]
User avatar
Tomahawk
Mbyte level
Mbyte level
Posts: 536
Joined: Tue May 18, 2004 1:50 pm

Post by Tomahawk » Mon Jul 31, 2006 1:22 pm

Το 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)
User avatar
tsilochr
Wow! Terabyte level
Wow! Terabyte level
Posts: 3246
Joined: Tue Mar 16, 2004 2:47 pm
Academic status: PhD
Gender:
Location: mm.aueb.gr
Contact:

Post by tsilochr » Mon Jul 31, 2006 5:11 pm

δεν το έχω δουλέψει αλλά το πιο πιθανό είναι το εξής:

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

o firefox για παράδειγμα παίρνει όρισμα το Url που θα ανοίξει. Κάνε start -> run- -> firefox.exe "www.aueb.gr" (αν έχεις ήδη ανοιχτό forefox θα ανοίξει νέο tab)
User avatar
mikros
byte level
byte level
Posts: 127
Joined: Wed Nov 09, 2005 8:08 pm
Academic status: Alumnus/a
Gender:
Location: somewhere in the world
Contact:

Post by mikros » Mon Jul 31, 2006 8:49 pm

Λοιπον τα 1,2,4 τα πέτυχα μέσω του runtime και του exec. To προβλημά μου είναι μόνο πως θα δημιουργήσω μέσα από τη java ένα key event το οποίο θα γίνεται listen απο άλλα προγράμματα. Αντι να πατάω εγώ το T π.χ. να πατιεται μόνο του απο τh java
User avatar
tsilochr
Wow! Terabyte level
Wow! Terabyte level
Posts: 3246
Joined: Tue Mar 16, 2004 2:47 pm
Academic status: PhD
Gender:
Location: mm.aueb.gr
Contact:

Post by tsilochr » Mon Jul 31, 2006 10:04 pm

οκ το έψαξα λίγο στο 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
User avatar
tsilochr
Wow! Terabyte level
Wow! Terabyte level
Posts: 3246
Joined: Tue Mar 16, 2004 2:47 pm
Academic status: PhD
Gender:
Location: mm.aueb.gr
Contact:

Post by tsilochr » Tue Aug 01, 2006 4:34 pm

επειδή αυτό που είπα είναι και λίγο επιστημονική φαντασία, άμα καταφέρεις κάτι πες το κι από δω
User avatar
mikros
byte level
byte level
Posts: 127
Joined: Wed Nov 09, 2005 8:08 pm
Academic status: Alumnus/a
Gender:
Location: somewhere in the world
Contact:

Post by mikros » Tue Aug 01, 2006 4:53 pm

κοιτάω αυτό εδώ http://www.tbdev.net/index.php?showforum=35 username=ego.eimai password=delta1
αλλα μάλλον δεν πιανει... εκτος κανω κατι εγω λαθος...
το ιδιο ισχυει και για αυτο που προτεινες...
το θέμα είναι το action που θα γίνεται να μην γινεται listen μόνο εσωτερικά στο προγραμμα java αλλα σε ολα τα windows...
Post Reply

Return to “Προγραμματισμός”