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

 

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

shutdown/log off/restart app. Visual C++ 2005

Îåêßíçóå áðü ôï ìÝëïò PsySpooky. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 23-04-2007, 01:00. Υπάρχουν 12 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  13-04-2007, 18:57 28968

    shutdown/log off/restart app. Visual C++ 2005

    Καλησπέρα!

    θέλω να φτιάξω μια εφαρμογή που θα τερματίζει/θα κάνει restart kai θα αποσυνδέει τα windows όταν o timer expire.

    για αρχή έκανα ενα shutdown pc  button στο οποίο έγραψα
    BOOL ExitWindowsEx(
    UINT uFlags,
    DWORD dwReason
    );

    αυτόν το κομμάτι κώδικα το βρήκα στο net και δεν δούλεψε.

    μήπως μπορείτε να μου δώσετε links gia tutorials περί του θέματος?

    thx!

    CC Calculator -newest version: 1.6-

    Επισκευθήτε το blog μου :)

  •  17-04-2007, 00:52 29713 σε απάντηση της 28968

    Απ: shutdown/log off/restart app. Visual C++ 2005

  •  21-04-2007, 01:26 30541 σε απάντηση της 29713

    Απ: shutdown/log off/restart app. Visual C++ 2005

    ψάχτηκα λίγο στο νετ.

    ε με τα πολλά έκανα include windows.h και μετά κάτω απο τον κώδικα του button έγραψα τα ακόλουθα

    BOOL WINAPI ExitWindowsEx(
      UINT uFlags,
      DWORD dwReason
    );

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

    CC Calculator -newest version: 1.6-

    Επισκευθήτε το blog μου :)

  •  21-04-2007, 02:59 30551 σε απάντηση της 30541

    Απ: shutdown/log off/restart app. Visual C++ 2005

    γιατί δεν δοκιμάζεις να καλέσεις (με Process.Start) το shutdown.exe που βρίσκεται στο System32 κατάλογο;;;
    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  21-04-2007, 03:30 30556 σε απάντηση της 30551

    Απ: shutdown/log off/restart app. Visual C++ 2005

    μμ δεν το σκέφτηκα..
    θα το κοιτάξω αμέσως ευχαριστώ!!!!

    CC Calculator -newest version: 1.6-

    Επισκευθήτε το blog μου :)

  •  21-04-2007, 14:25 30635 σε απάντηση της 30541

    Απ: shutdown/log off/restart app. Visual C++ 2005

    PsySpooky:
    ψάχτηκα λίγο στο νετ.

    ε με τα πολλά έκανα include windows.h και μετά κάτω απο τον κώδικα του button έγραψα τα ακόλουθα

    BOOL WINAPI ExitWindowsEx(
      UINT uFlags,
      DWORD dwReason
    );

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


    Δε γίνεται τίποτα, γιατί αυτό που έγραψες είναι ο ορισμός μιας function που περιέχεται στο Win32 API. Αυτό που χρειάζεσαι δεν είναι να την δηλώσεις, αλλά να την καλέσεις, όπως π.χ.:

    BOOL result = ExitWindowsEx(EWX_SHUTDOWN, SHTDN_REASON_MAJOR_APPLICATION | SHTDN_REASON_MINOR_OTHER);
    if (!result)
    {
        DWORD errorCode = GetLastError();
        // error handling
    }

    Όλα αυτά μπορείς να τα βρείς στο documentation της ExitWindowsEx, το οποίο μάλλο δεν συμβουλεύτηκες και παιδεύτηκες άδικα, άσε που έχει μέσα και παράδειγμα. Πρώτα απ' όλα, RT(F)M!!!!

    Νατάσα Μανουσοπούλου
  •  22-04-2007, 04:10 30685 σε απάντηση της 30635

    Απ: shutdown/log off/restart app. Visual C++ 2005

    Δυστιχώς ο κώδικας που μου έδωσες Νατάσα δεν δούλεψε.. έχω περίεργα errors..


    CC Calculator -newest version: 1.6-

    Επισκευθήτε το blog μου :)

  •  22-04-2007, 23:26 30732 σε απάντηση της 30685

    Απ: shutdown/log off/restart app. Visual C++ 2005

    Γιατί δε δίνεις λίγη περισσότερη πληροφορία...
    Έχεις compile errors; link errors; αποτυγχάνει η ExitWindowsEx; τι επιστρέφει τότε η GetLastError; τι παραμέτρους της δίνεις;
    Για να πάρεις μια καλή απάντηση, θα πρέπει να δώσεις και μια καλή ερώτηση.

    Νατάσα Μανουσοπούλου
  •  22-04-2007, 23:51 30737 σε απάντηση της 30732

    Απ: shutdown/log off/restart app. Visual C++ 2005

    Ο κώδικας της Νατάσας είναι σωστός. Τα λάθη και τα προβλήματα που αναφέρεις δεν έχουν να κάνουν με την ExitWindowsEx αλλά με το πως γράφουμε ένα οποιοδήποτε πρόγραμμα σε C++, με το τί είναι header, πως τους χρησιμοποιούμε, πως καλούμε τα functions που ορίζονται εκεί. Ίσως θα έπρεπε να ασχοληθείς πρώτα με πιο απλά πράγματα και να χρησιμοποιήσεις τα functions των βιβλιοθηκών της C++. Δοκίμασε για παράδειγμα να δουλέψεις με τα cin, cout, τη διαχείριση αρχείων, ίσως και με τα strings του Standard Template Library. Ακόμα καλύτερα, αγόρασε και διάβασε κάποιο εισαγωγικό βιβλίο για C++. Η C++ δεν είναι γλώσσα που μαθαίνεται ψάχνωντας αρθράκια στο Internet.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  23-04-2007, 00:10 30738 σε απάντηση της 30737

    Απ: shutdown/log off/restart app. Visual C++ 2005

    @Mrs Manousopoulou
    έκανα include windows.h
     και έγραψα

        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    BOOL WINAPI ExitWindowsEx(
      UINT uFlags,
      DWORD dwReason
    );
    BOOL result = ExitWindowsEx(EWX_SHUTDOWN, SHTDN_REASON_MAJOR_APPLICATION | SHTDN_REASON_MINOR_OTHER);

    έχω τα ακόλουθα errors:
    Output Window
      
    Linking...
    PC Master.obj : error LNK2028: unresolved token (0A00000E) "extern "C" int __stdcall ExitWindowsEx(unsigned int,unsigned long)" (?ExitWindowsEx@@$$J18YGHIK@Z) referenced in function "private: void __clrcall PCMaster::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@PCMaster@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
    PC Master.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall ExitWindowsEx(unsigned int,unsigned long)" (?ExitWindowsEx@@$$J18YGHIK@Z) referenced in function "private: void __clrcall PCMaster::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@PCMaster@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
    D:\Documents and Settings\Spooky\Τα έγγραφά μου\Visual Studio 2005\Projects\PC Master\Debug\PC Master.exe : fatal error LNK1120: 2 unresolved externals

    @Μr Kanavas
    έχω πάρει είδη 2βιβλία..

    το 'Εισαγωγή στην C++' - αρκετ'α παλίο βιβλίο
    και το Visual C++ Express Edition Programming for the absolute beginner
    (game aproach :P )


    CC Calculator -newest version: 1.6-

    Επισκευθήτε το blog μου :)

  •  23-04-2007, 00:28 30740 σε απάντηση της 30738

    Απ: shutdown/log off/restart app. Visual C++ 2005

    Τότε, ξεκίνα αργά-αργά, και δοκίμασε να κάνεις compile τα παραδείγματα των βιβλίων, ειδικά εκεί που αναφέρουν τη χρήση βιβλιοθηκών. Από τον κώδικα σου καταλαβαίνω ότι δεν έχεις καταλάβει τί είναι οι headers και πως λειτουργούν. Τέλειωσε πρώτα τα βιβλία, και μετά δοκίμασε να χρησιμοποιήσεις βιβλιοθήκες. Δεν μπορείς να παρακάμψεις τα βασικά της γλώσσας και να αρχίσεις κατευθείαν να καλείς βιβλιοθήκες. Η C++ δεν είναι εύκολη γλώσσα, δεν σου επιτρέπει να κόψεις δρόμο.

    Υποψιάζομαι ότι στο παρελθόν έχεις δουλέψει με Visual Basic, ή αντέγραψες κώδικα γραμμένο σε Visual Basic. Λοιπόν, η VB δεν έχει καμμία σχέση με την C++. ΔΕΝ χρειάζεται να ξανα-δηλώσεις ένα function εφόσον έχεις περιλάβει το header που το ορίζει. Το χρησιμοποιεί απευθείας. Όπως δεν γράφεις τον ορισμό της readln μέσα στο πρόγραμμα σου, δεν χρειάζεται να γράψεις και τον ορισμό της ExitWindowsEx.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  23-04-2007, 00:28 30741 σε απάντηση της 30738

    Απ: shutdown/log off/restart app. Visual C++ 2005

    PsySpooky:
    @Mrs Manousopoulou
    έκανα include windows.h
     και έγραψα

        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    BOOL WINAPI ExitWindowsEx(
      UINT uFlags,
      DWORD dwReason
    );
    BOOL result = ExitWindowsEx(EWX_SHUTDOWN, SHTDN_REASON_MAJOR_APPLICATION | SHTDN_REASON_MINOR_OTHER);


    Ας πάρουμε τα πράγματα από την αρχή: η ExitWindowsEx είναι function του Win32 API. Για να την καλέσεις, πρέπει να έχεις στη διάθεσή σου τη δήλωσή της, για να την "μάθει" ο compiler. Αυτό το έκανες με το #include <windows.h>. Μετά την καλείς. Τέλος.
    Εσύ μέσα στην button1_Click την ξαναδηλώνεις, με τον ίδιο τρόπο, λέγοντας στον compiler "κοίτα, έχω μια δική μου function που λέγεται ExitWindowsEx" και μετά την καλείς, γιατί αυτή που υπάρχει στο windows.h έχει "κρυφτεί". Ε μετά ο linker ψάχνει να τη βρει και βεβαίως δε τη βρίσκει!

    Μέσα στην button1_Click αρκεί η κλήση result = ExitWindowsEx κλπ. Και βέβαια να ελέγχεις και τα return values και τα error codes .

    Όπως είπε και ο Παναγιώτης, χρειάζεσαι αρκετό διάβασμα. Ίσως πρέπει να ξεκινήσεις από το The C Programming Language των Kernighan & Ritchie, γιατί τα κενά που έχεις είναι σε αυτό το επίπεδο.
    Και μην ξεχνάς: δεν είναι κακό να είσαι πρωτάρης. Όλοι από κάπου ξεκινάνε. Αλλά χρειάζεται επιθυμία να μάθεις, και να μάθεις σε βάθος, και ειλικρινή και διαρκή προσπάθεια.

    Νατάσα Μανουσοπούλου
  •  23-04-2007, 01:00 30746 σε απάντηση της 30741

    Απ: shutdown/log off/restart app. Visual C++ 2005

    Ίσως το C++ Primer, 4th Edition του Stan Lippman να είναι προτιμότερο. Το βιβλίο των Kernighan & Ritchie είναι παλιό και αναφέρεται στην C. Αντίθετα, το C++ Primer είναι μόλις δύο ετών και καλύπτει την C++ σε αρκετό βάθος. Επίσης καλό, αν όχι καλύτερο, είναι το Accelerated C++ των Koening & Moo, το οποίο είναι σχετικά μικρό σε όγκο (μόνο 300 σελίδες)  και μπαίνει κατευθείαν στο ψητό στονν προγραμματισμό σε C++. Μία αναζήτηση στο Amazon, ή μία επίσκεψη στον Παπασωτηρίου θα βοηθήσει να βρεις και άλλα βιβλία.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems