tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1137
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    meinereiner85 meinereiner85 ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    50
    Hallo alle zusammen,

    das Thema gab es schon ein paar mal hier im Forum aber nie mit einer Lösung die ich verwenden konnte.

    Ich möchte mittels einer Applikation (geschrieben in C#) meinen Laptop mit WinXP in den Ruhezusand versetzten und diesen zu einer bestimmten Zeit wieder wecken.

    In habe hier eine kleine DLL und eine Anleitung für VB gefunden und das ganze mal folgendermaßen impelementiert:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
        class Program
        {
     
            [DllImport("PowrProf.dll")]
            public static extern bool SetSuspendState(bool Hibernate, bool ForceCritical, bool DisableWakeEvent);
     
            static void Main(string[] args)
            {
                int timer_day = DateTime.Now.Day;
                int timer_month = DateTime.Now.Month;
                int timer_year = DateTime.Now.Year;
                int timer_hour = DateTime.Now.Hour;
                int timer_minute = DateTime.Now.Minute+2;
                int timer_second = DateTime.Now.Second;
                Thread t = new Thread(new ThreadStart(tuwas));
                t.Start();
     
                //DateTime wakeuptime = new DateTime(timer_year, timer_month, timer_day, (timer_hour - (DateTime.Now.Hour - DateTime.UtcNow.Hour)), timer_minute, timer_second);
                DateTime wakeuptime = new DateTime(timer_year, timer_month, timer_day, timer_hour, timer_minute, timer_second);
                Console.WriteLine(String.Format("StartUp was set to {0}!", wakeuptime));
                Wake.SetWaitForWakeupTime(wakeuptime);
            }
     
     
            public static void tuwas()
            {
                Console.WriteLine("Waiting 10 seconds...");
                Thread.Sleep(10000);
                Console.WriteLine("Starting SetSuspendState ...");
                SetSuspendState(true, true, false);
            }
     
        }

    Getestet habe ich das ganze wie in dem Link beschrieben einmal mit der UTC-Zeit und einmal mit der UTC+1-Zeit.

    Ruhezustand ist aktiviert und der PC fährt auch runter aber startet nicht wieder.

    Hat jemand eine Idee wie es funktionieren kann?

    Gruß
    meinereiner
     

  2. #2
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Ich laß mir gerne etwas Neues beibringen (und hoffe, Jemand schreibt etwas zu der Frage), aber ich verstehe nicht, wie ein Programm, dass auf einem ausgeschalteten Rechner (nicht) läuft, diesen anmachen können soll. Es steht außer Frage, dass das BIOS so etwas kann, aber dies?! Ich bin verwirrt..

    mfg chmee

    p.s.: Ah, habe grad in den Link geschaut. Weckzeit im Bios einstellen und dann ausschalten, verstehe.. Hast Du den Link komplett durchgelesen? Ich denke, dass dort so ziemlich alle Fragen beantwortet werden.
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  3. #3
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Würde ich auch sagen. Wenn der PC aus ist, dann ist er aus. Und Ruhemodus == aus. Du könntest den StandBy-Modus anstatt Ruhemodus verwenden. Dann ließe sich der PC wohl reaktivieren.

    EDIT: Hatte chmees p.s. nicht gelesen...
    EDIT2: Habe mir den Link durchgelesen aber wurde nicht unbedingt daraus schlau, warum der obige Code nicht funktioniert. Einzige was mir auffällt: du verwendest keine UTC-Zeit
    EDIT3: Ah du hast geschrieben du würdest UTC manuell eingeben...Hm
    EDIT4: Auf der Seite steht geschrieben:
    Sub SetWaitForWakeupTime: Stellt eine UTC-Zeit ein, zu der der Rechner aus dem Stromsparmodus aufwacht.
    Vielleicht gilt es dann nicht für den Ruhezustand? Also wenn ich mir die MSDN zur verwendeten API SetWaitableTimer anschaue, dann steht da
    fResume [in]: If this parameter is TRUE, restores a system in suspended power conservation mode when the timer state is set to signaled. [...]
    Es wird also nur für den StandBy-Modus und nicht für den Ruhezustand funkionieren!
    EDIT5: Also der Aufruf von
    Code vbnet:
    1
    
    wh.WaitOne()
    in der Wake-Library scheint mir irgendwie fehlplatziert. MSDN sagt:
    Blocks the current thread until the current System.Threading.WaitHandle receives a signal.
    Ich würde das mal rausnehmen, es erscheint mir irgendwie sinnlos?! Vllt wird die ganze Anwendung und nicht nur der Thread blockiert? Ich werde daraus gerade nicht schlau.
    Geändert von Shakie (23.03.10 um 12:03 Uhr)
     
    hihi = -h²

  4. #4
    meinereiner85 meinereiner85 ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    50
    Hallo,

    Danke für eure Hilfe.
    Ich habe noch ein bisschen experimentiert mit den Punkten die ihr hier aufgelistet hat.
    Leider mit keinem Erfolg.

    Ich werde mir erstmal eine kleine Software suchen, die die Funktion schon implementiert hat. Vielleicht ist das auch ein prinzipielles Problem meines BIOS oder Betriebssystems.

    Gruß
    meinereiner
     

Ähnliche Themen

  1. Ruhezustand - PC wacht selbständig auf
    Von C-H im Forum Microsoft Windows
    Antworten: 11
    Letzter Beitrag: 14.08.10, 12:12
  2. PC aus Ruhezustand wecken
    Von coder2008 im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 06.11.09, 20:15
  3. Shutdownhook, Ruhezustand, ...
    Von cojack20 im Forum Java
    Antworten: 1
    Letzter Beitrag: 24.12.07, 17:40
  4. Ruhezustand und WakeUp mit C#
    Von ratho im Forum .NET Archiv
    Antworten: 9
    Letzter Beitrag: 15.06.06, 17:07
  5. Ruhezustand verlassen
    Von Bulli69 im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 23.04.06, 22:15