Monitor in Standby/ausschalten



  • Achja, ich empfehle dir einen Duden. (Voraus! 😃 Genau wie ich das gemacht habe loL)



  • Verzögerung hat leider auch nichts gebracht. Hab's probiert mit dieser Schleife, die ich vor die SendMessage-Funktion gesetzt hab:

    int i;
        for (i=0; i<500; i++) {
            cout << i << " ";
            }
    

    Habe auch höhere Maxima ausprobiert, aber funzt nicht. ich weiß ja auch nicht, wie lange das Programm braucht, um die Schleife durchlaufen zu lassen...

    Noch ne Idee?



  • xMox schrieb:

    Achja, ich empfehle dir einen Duden. (Voraus! 😃 Genau wie ich das gemacht habe loL)

    😃 Ich war mir bei dem Wort irgendwie nicht sicher, hab mich aber gewundert, dass es "ausgesternt" wurde. Na ja, man lernt nie aus, Hauptsache man versteht mich 💡



  • Wie gesagt, ich bin Kein Könner. 😃 Ich kann dir auch wohl kaum mehr behilflich sein; höchstens raten. Dein Quellcode sieht jetzt so aus oder?

    // standbyme.cpp
    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    int main() 
    {
     fflush(stdin);
     SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, 1); // Monitor auf Stand-By
    }
    

    Die Verzögerung lassen wir raus.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Jau, genauso sieht's aus. Ich frag mich halt nur, warum es klappt, wenn Dev das Programm ausführt und nicht, wenn ich es ausführ. Toll, mein erstes Programm geboren und es mag mich nicht. Ein schöner Anfang 😞



  • 🙂
    Wir wurden verschoben. Ich hab nur drauf gewartet.
    Verhinder mal, dass sich das Fenster wieder schließt. Inkludier mal <stdio.h> und schreib nach dem Monitor-Standby-Befehl: getchar(); .



  • Hab ich getan. Is aber genauso wie vorher, nur dass jetzt halt das Programmfenster geöffnet bleibt. Wofür is'n die getchar()?



  • Weiß denn keiner Rat?



  • getchar() ist in unserem Fall nur dafür da, auf ENTER zu warten. Also wird das Programm gehalten, bis Enter gedrückt wird. Anders hab ich es noch nie hergenommen. In C++ nimmt man für beinahe alles cin.
    Aber was dein Programm hat, weiß ich jetzt selber nicht so recht. Bisher konnt ich das Teil noch nicht selber ausprobieren, weil der PC hier keinen Compiler installiert hat. Ich muss auf meinen Schlepptop ausweichen, dann kann ich dir hoffentlich bald (oder später) mehr sagen.

    Bis dann, irgendwann!



  • // standbyme.cpp
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main() {
        fflush(stdin); //Löscht den Tastaturpuffer 
        int i;
        for (i=0; i<5000; i++) {
            cout << i << " ";
            }
        SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, 2); // Monitor aus
    }
    

    So funktioniert's jetzt. Ist zwar eher unelegant, aber na ja. Is halt ne Beta 😃



  • So gehts bei mir.

    // standbyme.cpp 
    #include <iostream> 
    #include <windows.h> 
    
    using namespace std; 
    
    void monitorStandby(void);
    
    int main() 
    {  
      monitorStandby();
    } 
    
    void monitorStandby(void)
    {
     SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, 1); //Monitor auf Stand-By
    }
    

    Keine Ahnung wieso, aber es geht.



  • Tja, da bin ich jetzt mit meinem Latein schon am Ende. Das ist doch ne Funktion-in-Funktion, oder nich? Letztendlich nix anderes als mein Programm ohne Schleife, oder?



  • Hä?? Wieso geht das denn so, aber als eine Funktion nicht? Sachen gibts... kann man ein Profi erklären!? :p



  • Probiers einfach und sag mir obs geht.



  • Moment, ich bin noch nich ganz wach 😃



  • Jo, Deine Version funktioniert genauso, wie meine alte. Sprich: Im Compiler ausführen funzt perfekt, beim selbst ausführen nich so...



  • Wär auch ziemlich seltsam gewesen. 😃 Mit einem Trick gehts (bei mir) wunderbar. Ich ruf das Programm mit einem anderen auf. Z.B. unter Windows mit einer Batchfile. Also eine Textdatei erstellen und deinen Programmpfad reinschreiben. Sah bei mir so aus: C:\Meine_Progs\test.exe. Dann speichern unter *Dateiname*.bat . So muss es gehen. Is halt auch ne Beta.
    Wozu brauchst du das überhaupt?



  • Das soll dazu sein, um den Monitor aus der Ferne auszuschalten. Wenn ich abends im Bett liege und einen Film am PC angesehen habe, dann hab ich keine Lust mehr aufzustehen und den Monitor auszumachen 😃 . So ruf ich einfach das Programm mit der Fernbedienung auf und fertig.

    Hab übrigens grad ne interessante Funktion gefunden.

    Sleep(5000);
    

    Damit kann man Wartezeit in Millisekunden programmieren. Werd das nachher mal ausprobieren, sitz schon am nächsten Projekt 💡



  • So funktioniert's jetzt wunderbar:

    // standbyme.cpp
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main() {
        int waittime=5000;  // Wartezeit in Millisekunden
        cout<<"Der Monitor wird in "<<waittime/1000<<" Sekunden in Standby geschaltet!"<<endl;
        Sleep(waittime);
        SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, 2); // Monitor aus
    }
    

    Man kann die Wartezeit natürlich noch reduzieren. Als nächstes werd ich mal versuchen, das Ganze in eine Windows-Anwendung, sprich WinAPI, zu portieren...


Anmelden zum Antworten