Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

c# Mini Media Player, arguments input

Îåêßíçóå áðü ôï ìÝëïò icecbr. Τελευταία δημοσίευση από το μέλος icecbr στις 14-06-2010, 22:14. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  13-06-2010, 22:52 59105

    c# Mini Media Player, arguments input

    Γεια χαρα σε όλους

    εχω φτιάξει ένα Mini Media Player για μουσικά αρχεία.

    εχω κανει τα mp3 να ανοίγουν με αυτό με την string[] args = Environment.GetCommandLineArgs(); κτλ...

    ανοιγει λοιπόν και το παιζει το mp3...
    οταν ομως 2πλοκλικαρω ενα άλλo mp3 θέλω να παίρνει σαν όρισμα το new mp3 και να το παιζει...
    (δηλ ενω παίζει ο player να φορτώσει το νεο που ζητήθηκε...)

    πως θα το κάνω αυτό ?
  •  14-06-2010, 12:37 59109 σε απάντηση της 59105

    Απ: c# Mini Media Player, arguments input

    Αυτό το νέο διπλό κλικ που κάνεις, που ακριβώς το κάνεις; Μέσα στην εφαρμογή σε κάποια λίστα ας πούμε που δείχνει τα mp3s ή στο shell σε κάποιο αρχείο;

     


    Vir prudens non contra ventum mingit
  •  14-06-2010, 13:05 59113 σε απάντηση της 59105

    Απ: c# Mini Media Player, arguments input

    Υποψιάζομαι ότι υπάρχει μία παρανόηση σχετικά με το τί κάνει η εφαρμογή, τί κάνει ο Explorer και πως περνάς παραμέτρους σε ένα πρόγραμμα.

    Όταν κάνεις διπλό κλικ σε ένα αρχείο ο Explorer ψάχνει να βρει με βάση την κατάληξη του αρχείου αν έχει οριστεί κάποιο πρόγραμμα το οποίο μπορεί να το ανοίξει. Όταν το βρει το εκτελεί και περνάει σε αυτό ως πρώτη παράμετρο το όνομα του αρχείου. Όταν εσύ κάνεις διπλό κλικ σε άλλο αρχείο θα γίνει ακριβώς το ίδιο και ο explorer θα ξεκινήσει ένα δεύτερο instance.

    Το ερώτημα σου στην πραγματικότητα είναι δύο ερωτήματα: Πως μπορώ να αποφύγω την εκτέλεση του δεύτερου instance και πως μπορώ να περάσω το όνομα του δεύτερου αρχείου στο πρώτο instance. Ευτυχώς, ο Scott Hanselman περιγράφει πως να λύσεις και τα δύο χρησιμοποιώντας το Microsoft.VisualBasic.dll και 10-15 γραμμές κώδικα. Ο κώδικας λέει στα Windows ότι θα υπάρχει μόνο ένα instance της εφαρμογής τη φορά. Όταν δοκιμάσεις να σηκώσεις το δεύτερο instance τα Windows θα ειδοποιήσουν το πρώτο δίνοντας ως παράμετρο το αρχείο που έκανες double click. Ο κώδικας είναι ο παρακάτω. Ουσιαστικά αντικαθιστάς την Application.Run με την SingleInstanceController.Run και ... καθάρισες:

    using System;
    using System.Windows.Forms;
    using Microsoft.VisualBasic.ApplicationServices;
    
    namespace SuperSingleInstance
    {
        static class Program
        {
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                string[] args = Environment.GetCommandLineArgs();
                SingleInstanceController controller = new SingleInstanceController();
                controller.Run(args);
            }
        }
    
        public class SingleInstanceController : WindowsFormsApplicationBase
        {
            public SingleInstanceController()
            {
                IsSingleInstance = true;
    
                StartupNextInstance += this_StartupNextInstance;
            }
    
            void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
            {
                Form1 form = MainForm as Form1; //My derived form type
                form.LoadFile(e.CommandLine[1]);
            }
    
            protected override void OnCreateMainForm()
            {
                MainForm = new Form1();
            }
        }
    }

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  14-06-2010, 22:14 59122 σε απάντηση της 59113

    Απ: c# Mini Media Player, arguments input

    Φιλε μου εγραψες!!

    ti worked like a charm!!! :)

    many many thanks!!!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems