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

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

Δημοσ.

Γεια σας ! Εχω μια ερωτιση. Εχω μια εφαρμογη στον υπολογιστη που δεν μπορω να την κλεισω με να παω στα tasks, να πατησω δεξι κλικ και μετα "εξοδος". πρεπει να το κανω καθε φορα kill με cmd. Γι'αυτο σκεφτηκα να κανω εναπολυ απλο προγραμματακι που θα το κανει  αυτο αυτοματα χωρις να πρεπει να ανοιγω το cmd καθε φορα, και να γραφω. Εψαξα στο ιντερνετ για καποιον τετιο κωδικα και βρηκα μονο να κανεις "kill process by name". Εγω θελω να κανω επι ονομα αρχειου. ΠΧ αμα θελω να κλεισω το notepad να του λεω notepad.exe οχι σκετο notepad. Δηλαδη να ειναι πιο συγκεκρημενο. Καμια ιδεα ??

Δημοσ.

Πρέπει να βρεις το παράθυρο με βάση το όνομά του και μετά να το κλείσεις. Δες εδώ:

 

http://stackoverflow.com/questions/9248444/how-to-close-window-by-its-name

Αυτο το εχω δει. ΑΛλα δεν μπορω να κανω kill το αρχειο. Δηλαδη την "πηγη" ας το πουμε ετσι. Μου ειναι πιο ευκολο...

Δημοσ.

Δεν καταλαβαίνω. Έχεις 10 αρχεία ανοιχτά με notepad και θέλεις να τα κλείσεις όλα δλδ? 

ναι αυτο ακριβως θελω. Το notepad το εφερα σαν παραδειγμα. θελω να κανω kill δηλαδη ολη την εφαρμογη...

Δημοσ.

Μια εφαρμογή κλείνει με kill όσα παράθυρα και να έχει ανοιχτά, αν δεν έχει ίδια ονόματα πρέπει να φτιάξεις ένα λοοπ με kill και τα ονόματα των ανοιχτών εφαρμογων που θέλεις να τερματίσεις

Δημοσ.

Δες αυτό http://stackoverflow.com/questions/13547639/return-window-handle-by-its-name-title

 

ο τύπος χρησιμοποιεί το 

if (pList.MainWindowTitle.Contains(wName))

οπότε δώσε στο wName το όνομα της εφαρμογής και εφόσον περιέχετε στον τίτλο ότι βρίσκει θα το κλείνει. Σε συνδιασμό με το πρώτο παράδειγμα βγαίνει. 

  • 2 εβδομάδες αργότερα...
Δημοσ.

ναι αυτο ακριβως θελω. Το notepad το εφερα σαν παραδειγμα. θελω να κανω kill δηλαδη ολη την εφαρμογη...

 

Ο παρακάτω κωδικας κλείνει όλα τα ανοικτά παράθυρα του notepad τα οποία δεν έχουν τίτλο.

 

Σημειωση: Αν τα windows ειναι στα αγγλικά θα πρέπει να αλλάξεις την παράμετρο του FindWindowByCaption από "Χωρίς τίτλο - Σημειωματάριο" σε "Untitled - Notepad" για να το βρει.

        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        /// <summary>
        /// Find window by Caption only. Note you must pass IntPtr.Zero as the first parameter.
        /// </summary>
        [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
        static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

        const UInt32 WM_CLOSE = 0x0010;


        private void button2_Click(object sender, EventArgs e)
        {
            IntPtr windowPtr;
            
            while ((windowPtr = FindWindowByCaption(IntPtr.Zero, "Χωρίς τίτλο - Σημειωματάριο")) != IntPtr.Zero)
            {
                SendMessage(windowPtr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
            }
        }
Δημοσ.

To είχα εύκολο σε VB6 σκοτώνει ολη την εφαρμογή. Το "taskkill /IM iexplore.exe" ειναι command των win και το τρέχεις εσωτερικά απο τον κωδικά, το "Shell" ειναι εντολή της vb,  το παρακάτω σκοτώνει τον iexplore σε ενα προγραμματακι μου

 

Shell "taskkill /IM iexplore.exe"
 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...