Προς το περιεχόμενο

Πρόγραμμα για χρήση άλλου λογισμικού


bio_energy

Προτεινόμενες αναρτήσεις

Καλησπέρα

 

Γνωρίζει κανείς πώς μπορώ με χρήση ενός προγράμματος να καλώ και να χρησιμοποιώ ένα άλλο λογισμικό; Πιο συγκεκριμένα θέλω να καλέσω ένα πρόγραμμα προβολής Video, όπως π.χ. Win.MediaPLayer, για να "παίξει" ένα video και να κάνει print μια εικόνα από αυτό. Θα ήθελα αν μπορεί κάποιος να μου δώσει κάποιες κατευθηντήριες γραμμές.

 

Ευχαριστώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τι γλώσσα χρησιμοποιείς? Ολες σχεδον επιτρεπουν να εκτελεσεις εντολες κελυφους μεσα απο το προγραμμα σου. Δηλαδη ο,τι θα μπορουσες να κανεις απο γραμμη εντολών να μπορεις να το κανεις και προγραμματιστικα.

 

Σχεδον ολα τα προγραμματα επισης, ασχετα αν ειναι φτιαγμενα μονο για γραφικο περιβαλλον επιτρεπουν τουλαχιστον να τα ξεκινησεις απο γραμμη εντολων με παραμετρο το αρχειο που θες να ανοιξεις.

πχ c:\windows\notepad.exe c:\a_text_file.txt

θα σου ανοιξει το αρχειο a_text_file.txt με το notepad. Δεν νομιζω το windows media player να αποτελει εξαιρεση.

Προσεχε μονο αν τα ονοματα εχουν κενο, να τα βαζεις σε εισαγωγικα πχ "c:\program files\program folder\program.exe" "c:\my documents\input file.txt"

 

Τωρα για το πως θα δωσεις περαιτερω εντολες στο αλλο προγραμμα δεν ξερω. Ισως γραφοντας καποιο script με το auto it (δωρεαν ειναι, θα το βρεις ευκολα) το οποιο περναει keystrokes και mouse clicks και καλωντας το απο το προγραμμα σου. Θελει ψαξιμο ομως.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ο "μπακάλικος" τρόπος είναι αυτός του autoit: ψάχνω το τάδε παράθυρο με τον τάδε τίτλο (api: findwindow), του στέλνω πλήκτρα (api: sendkeys) και mouse clicks, και το κάνω να κάνει αυτό που θέλω.

 

Και μόλις το "άλλο λογισμικό" αλλάξει έκδοση δεν θα τρέχει γιατί θα υπάρχει ένα κουμπί ακόμα και θα θέλει τρία tab για να φτάσεις εκεί που σκόπευες ενώ εσύ έστειλες μόνο δυο.

 

Ο πιο σωστός τρόπος είναι: το «άλλο λογισμικό» να κάνει expose τις λειτουργίες του μέσω com objects, τα οποία στη συνέχεια μπορούν να προσπελαστούν από οποιαδήποτε σχεδόν γλώσσα, ακόμα κι από scripts. Έτσι επικοινωνείς απ' ευθείας μαζί του και του λες "άνοιξε αυτό το αρχείο",

όχι "κάνε κλικ στο τάδε μενού και στείλε δύο backspace για να φτάσεις στο σκληρό δίσκο και μετά πάτα δύο tab κτλ κτλ".

 

Βέβαια πρέπει τα com objects να τα υποστηρίζει το "άλλο λογισμικό" εξ' αρχής, αν δεν τα υποστηρίζει δεν μπορείς να κάνεις κάτι γι' αυτό. Τα περισσότερα της M$ πάντως τα υποστηρίζουν.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρα ο μονος γενικος τροπος ειναι ο μπακαλικος? Κριμα! Περιμενα να υπαρχει κατι καλυτερο.

 

Αυτο που λες για MS ισχυει και για .νετ περιβαλλον?

 

Αν το αλλο προγραμμα ειναι πχ java application περιοριζομαστε εκ των πραγματων στον μπακαλικο?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για .net: ναι, τα com objects παίζουν κανονικά (απ' όσο έχω ακούσει, δεν έχω προγραμματίσει .net).

Για java: δεν έχω ιδέα, ίσως με το RMI να γίνεται κάτι αντίστοιχο. Ας απαντήσει κανένας java-σχετικός.

 

Το πρόβλημα ουσιαστικά είναι το:

>
void MyAppOpenFile(char *filename)
{
...ανοίγεται το αρχείο...
}

 

Γενικά οι περισσότερες εφαρμογές γράφουν υποπρογράμματα χωρίς να τους ενδιαφέρει η επαφή με τον "έξω κόσμο". Ε, εφόσον δεν υπάρχει πρόβλεψη, δεν υπάρχει περίπτωση να καλέσεις "από έξω" την MyAppOpenFile() {παρένθεση: εννοείται με λογικούς τρόπους και χωρίς να φας μια βδομάδα σε reverse engineering}.

 

Υπάρχουν και διάφορες εφαρμογές (εξαιρέσεις) που έχουν δικό τους τρόπο, π.χ. νομίζω το WinAmp (επίσης δεν το έχω χρησιμοποιήσει ποτέ). Στο περίπου:

έχουν μεριμνήσει ώστε όταν τους στέλνεις ένα ειδικό μήνυμα, π.χ. WM_MYAPP_COMMANDS, να κοιτάνε το μήνυμα και να αντιδρούν ανάλογα. Έτσι με ένα απλό μήνυμα και χωρίς να ανακατεύεται το interface του προγράμματος μπορείς να τις διατάξεις να ανοίξουν αρχεία, να παίξουν το επόμενο mp3 κτλ κτλ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ πολύ

 

Θα δοκιμάσω αρχικά με το autoit γιατι αθτό που θέλω είναι σχετικά απλό και δεν ειναι κάτι που θα το κάνω συνεχεία(δεν έχω φόβο να αλλάξει έκδοση το λογισμικό), πάντως αν είναι εύκολο θα ήθελα alkisg να μου δώσεις λίγο περισσότερες λεπτομέρειες γιατ τα com objects ή να μου πείς που θα μπορούσα να βρώ περισσότερες λεπτο..

 

Ευχαριστώ και πάλι

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πληροφορίες για τι; Για να προγραμματίσεις ή για να χρησιμοποιήσεις;

Για να προγραμματίσεις, πάρε μερικά για αρχή:

http://en.wikipedia.org/wiki/OLE_Automation

http://www.cgoakley.demon.co.uk/prog/oleaut.html

Αν και θα χρειαστείς αρκετό καιρό για να εξοικειωθείς.

 

Για να χρησιμοποιήσεις, διαβάζεις το manual της εφαρμογής που σε ενδιαφέρει, αν αυτή υποστηρίζει com automation...

Π.χ. για το word αν γράψεις vba word στο google θα βρεις εκατομμύρια παραδείγματα. Υπάρχει και το σχετικό manual της VBA στην msdn library.

Για autocad, ψάχνεις για autocad automation ή autocad vba...

 

Για ποιο πρόγραμμα ενδιαφέρεσαι;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ενδιαφέρομαι για κάποιο πρόγραμμα συγκεκριμένα απλά επειδή το χρειάστηκα τώρα γι'αυτό ρ'ωτησα. Για vba κάτι έχω υπόψιν μου αλλά δεν χρειάζομαι αυτή την στιγμή κάτοι τέτοιο. Θα κοιτάξω αυτά που μου είπες για αρχή.Thanx

Επίσης χρησιμοποίησα το Autoit και με βοήθησε αρκετά. Είναι αρκετά εύχρηστο και εύκολο να το δουλέψεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...