tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
27
ZUGRIFFE
3011
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Sag mal Reverent, ließt Du eigentlich was ich Dir schreibe?
    Ich geb mir hier absolute mühe und Du arbeitest hier einfach schlapig mit.
    1. kannst Du mich cosmo nennen
    2. solltest Du mal bitte genauer nachlesen und nicht oberflächlich.
      Ich hab Dir eine eigentlich "absolut narrensichere" Step-By-Step Anleitung gepostet.
    3. Postest Du jetzt deinen Code und ich korrigier ihn damit Du endlich begreifst was Du falsch machst.
      Und zwar so wie es Dir in diesem Post beschrieben hab.

    Ich hab auch anfangs Denkblockaden gehabt. Aber durch fertigen code lernt man nicht
    Nur aus seinen eigenen Fehlern.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  2. #17
    Reverent Reverent ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    190
    Hallo cosmo,
    Ok noch mal von vorne ob ich das richtig kapiert habe, also wenn der User den PC runterfährt, dann wird diese funktion aufgerufen?
    Aber ich glaube das stimmt nicht, also noch mal.
    Hier wird die WndProc-Methode überschrieben.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    protected override void WndProc(ref Message m)
    {
       if(m.Msg == WM_QUERAENDSESSION)
       {
          test();           // Funktionsaufruf
          v_bExitCalled = true;
       }
       base.WndProc(ref m);
       }
    }
    Was sit jetzt das LogoffSignal und wo kommt dieses hin 'globalen MessageLoop'.
    Ich nehme an erst mal global (auf der kompletten From zugreifbar).
    Und was ist dann dei MessageLoop?

    Die WndProc-Methode stellt den MessageLoop dar,
    Heißt das jetzt die WndProc Methode durch eine Schleife z.B. foreach nach einem bestimmten Wert abfragen?
    Bis dann
     

  3. #18
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Die WndProc-Methode stellt den MessageLoop vom Windows dar
    und wird immer wiederkehrend aufgerufen. NON-STOP!
    Desshalb dürfen auch keine krittischen Abläufe und Messageboxes hinein.
    Das ist die Achillesferse vom WXP.

    Stell Dir vor du wohnst in einem Hochhaus. Dann währe das die interne Sprechanlage.

    Hier drinnen kannst Du eigentlich alle SystemEreignisse in Form von Codes tracken.
    Wie zum Beispiel: CD-Laufwerk öffnet und schließt sich und Div. System Ereignisse wie zB das beenden der Session.

    Du prüfst also auf ein besimmtes Ereignis, setzt ein Flag in deinem Proggi,
    und schon kannst Du darauf reagieren.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  4. #19
    Reverent Reverent ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    190
    Das heißt ich muss die Flag immer überprüfen ob die z.b von false auf true gesetzt wurde?
    Code :
    1
    2
    
    if(!v_bExitCalled)
       e.Cancel = true;
    So wie das meinst du?

    Du sagst das ist bei Windows XP so aber was ist mit anderen Systemen Z.B W98 oder W2000 u.s.w von Linux über Mono mal ganz abgesehn!!
     

  5. #20
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Ja genau.
    Reverent,
    e.Cancel = true; bedeutet in der Form.Closing Methode dass das Beenden des Programm abgebrochen wird. (Es bleibt an)
    Dieses Snippet hat aber mit unserem Vorhaben nicht zu tun.
    Wir wollen nicht das Beenden abbrechen solange die Session nicht beendet wurde,
    sondern wir wollen darauf regieren wenn die Session beendet wird.
    Hier mal ein Beispiel wo beides miteinander Verbunden ist. (TrayIcon zum Form hinzu fügen):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
     
        if( v_bExitCalled ) // Speichern der Daten wenn die Session beendet wird
            SaveMySettings();
        else{           // Form ausblenden und nur im SysTray anzeigen
            this.WindowState = FormWindowState.Minimized;
            e.Cancel = true; // [B]Abbrechen des Beendens des Forms[/B]
        }
    }
    // Ereignisbehandlung wenn das Form minimiert oder maximiert wird
    private void Form1_LocationChanged( object sender, EventArgs e ) {
        if ( this.WindowState == FormWindowState.Minimized ) this.ShowInTaskbar = false;
        else if ( this.WindowState == FormWindowState.Normal ) this.ShowInTaskbar = true;
    }
    Du sagst das ist bei Windows XP so aber was ist mit anderen Systemen Z.B W98 oder W2000
    Ich hätte das verallgemeinern sollen.
    Es betrifft alle Windows Systeme. AFAIK
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  6. #21
    Reverent Reverent ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    190
    Hallo cosmo,
    ich glaube den ersten Fehler habe ich gefunden und zwar
    private void Form1_Closing(...) dieser Event wird garnicht ausgeführt, weil der User am PC das From ja garnicht schliesst ich muß einen anderen Event finden der ausgelöst wird, wenn das Programm beendet wird.
    Und das Programm wird nur beendet dadurch das der User sich abmeldet, neustartet oder den PC runterfährt.

    So eine s...... .
    Also irgend welche vorschläge?

    Frage: Kann ich mein Programm nicht in einem Thread einpacken und darauf reagieren, wenn der beendet wird?

    Bis dann
     

  7. #22
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    private void Form1_Closing(...) dieser Event wird garnicht ausgeführt
    Hast Du es denn überhaupt mit der Methode verbunden? (Hab ich erklärt)
    weil der User am PC das From ja garnicht schliesst ich muß einen anderen Event finden der ausgelöst wird, wenn das Programm beendet wird.
    Die Closing Methode ist die EINZIGE Möglichkeit das schließen des Forms abzufangen.
    Sie wird immer aufgerufen, egal wer oder was das Programm beendet.
    So eine s...... .
    Genau das hab ich anfangs auch immer gesagt.
    Frage: Kann ich mein Programm nicht in einem Thread einpacken und darauf reagieren, wenn der beendet wird?
    Schweinskram.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  8. #23
    Reverent Reverent ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    190
    Natürlich habe ich eine private void Form1_Closing(...);

    Dies stand ja schon da:
    this.Closing += new System.ComponentModel.CancelEventHandler(this.Form1_Closing);

    und dies habe ich darunter geschrieben:
    this.Closing += new CancelEventHandler(this.Form1_Closing);

    Meinst du da wo 'this.Form1_Closing' steht.
    Aber was für eine Metohde?
    Bis dann
     

  9. #24
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Form1_Closing ist die Methode die bei dem Event Closing ausgeführt wird.

    this.Closing += new System.ComponentModel.CancelEventHandler(this.Form1_Closing);

    und dies habe ich darunter geschrieben:
    this.Closing += new CancelEventHandler(this.Form1_Closing);
    Die zwei Zeilen machen genau das gleiche. Der einzige unterschied besteht darin,
    dass oben über den Namespace auf die Klasse CancelEventHandler zugegriffen wird,
    und unten direkt. ( Namespace wurde mit using eingebunden.)

    Du brauchst das also blos einmal da stehen haben.

    Ich frage mich jetzt echt wie es sein kann, dass der Code in dem Closing Event,
    deiner Meinung nach, nicht ausgeführt wird.

    Setz mal bitte einen Haltepunkt und debugge das Programm.
    Wenn Du es beendest, MUSS die IDE in den Codeabschnitt springen.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  10. #25
    Reverent Reverent ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    190
    Hallo cosmo,
    Die zwei Zeilen machen genau das gleiche. Der einzige unterschied besteht darin,
    dass oben über den Namespace auf die Klasse CancelEventHandler zugegriffen wird,
    und unten direkt. ( Namespace wurde mit using eingebunden.)
    und was ist da jetzt noch der Unterschied, irgend was muß da ja noch ander sein.
    Bis dann
     

  11. #26
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Einmal hat er den Namespace mit using eingebunden und einmal nicht.
    Lesen!
     

  12. #27
    Julian Maicher Julian Maicher ist offline Mitglied Smaragd
    Registriert seit
    Jan 2004
    Ort
    Paderborn
    Beiträge
    1.210
    Da gibt es keinen anderen Unterschied. Man spart sich einfach nur Schreibarbeit.
     

  13. #28
    Reverent Reverent ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    190
    Einen besten Danke an alle die mir hier geholfen haben und besonders an cosmo.
    Soweit Funktioniert es alles so wie ich will nur jetzt geht es noch an die Feinarbeit, ich muss da halt noch ein paar Variabeln etwas umbennen u.s.w. und vielleicht noch etwas mehr OOP rein zaubern.
    Also bis dann.


    P.S. Wenn ich fertig bin stelle ich mein Programm hier Zuverfügung, wer Lust hat kann dann ja ein wenig rein schnuppern und ich bin für Konstruktive Kritik immer offen.
     

Ähnliche Themen

  1. ES will nicht runterfahren
    Von metalgear im Forum Microsoft Windows
    Antworten: 1
    Letzter Beitrag: 28.06.04, 13:50
  2. ein programm zum runterfahren uvm.
    Von microchip im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 04.05.04, 23:53
  3. WinXP runterfahren
    Von Foehre im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 23.11.03, 16:38
  4. PC mit Timer Runterfahren****?
    Von RealDragon im Forum Microsoft Windows
    Antworten: 4
    Letzter Beitrag: 15.08.03, 09:35
  5. win2000 - runterfahren !
    Von adam im Forum Microsoft Windows
    Antworten: 4
    Letzter Beitrag: 02.01.03, 15:35