Seite 2 von 3

Verfasst: 09.09.2007 10:47
von Scarabol
Hi Leute,

wie kann ich den PC in den Ruhezustand versetzen?

bzw. Standby, Lock (WinTaste+L), ect...

Wie lauten die EWX Konstanten dafür?

Gruß
Scarabol

Verfasst: 09.09.2007 12:39
von RSBasic
@Scarabol
%windir%\System32\rundll32.exe PowrProf.dll,SetSuspendState

>Wie lauten die EWX Konstanten dafür
Sry, ka
Da gabs nen Thread, wo man die Taste-ID ermitteln konnte.

Verfasst: 10.10.2007 19:49
von HemSA
Hallole Ihr,
ich habe die Version von Fluid Byte verwendet um den PC herunterzufahren. Allerdings klappt es bei Win2000 in der Arbeit nicht, bei mir daheim mit XP daheim kein Problem). Auch klappt es nicht, wenn noch eine Anwendung offen ist ( Outlook, Excel ... ).

1.) Gibt es eine Möglichkeit den PC 100% herunterzufahren, egal ob noch Anwendungen offen sind?
2.) Kann das in der Arbeit vielleicht auch daran liegen, weil ich da an ein Netzwerk angemeldet bin?
3.) Gibt es eine Möglichkeit statt dem Herunterfahren einen Restart auszuführen, mit der "Eingabe" von dem Usernamen und Passwort für das Anmelden zum Netzwerk ( vorher in dem Programm gespeichert)? Der Grund für die Frage 3 ist, dass die PC's ab und zu mal heruntergefahren und wieder gestartet werden sollen, um danach wieder besser, schneller zu sein ( ist die Aussage von der IT-Abteilung ?!?! ), aber das dauert eine Weile. So dachte ich mir, schreibste ein Programm, wo das automatisch macht, wenn die Leute in der Mittagspause sind ( PC's sind in der Fertigung ).

Mein Code ist folgender:

Code: Alles auswählen

Procedure ExitWindows(Flags.l) 
   Protected tkp.TOKEN_PRIVILEGES 
   Protected tkpNewButIgnored.TOKEN_PRIVILEGES 
        
   OpenProcessToken_(GetCurrentProcess_(),#TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY,@hdlTokenHandle) 

   ; Get the LUID for shutdown privilege. 
   LookupPrivilegeValue_(0,"SeShutdownPrivilege",tkp\Privileges\Luid) 

   tkp\PrivilegeCount = 1    ; One privilege to set 
   tkp\Privileges\Attributes = #SE_PRIVILEGE_ENABLED    
    
   ; Enable the shutdown privilege in the access token of this process. 
   AdjustTokenPrivileges_(hdlTokenHandle,0,tkp,0,0,0) 
    
   ExitWindowsEx_(Flags,0) 
EndProcedure 




Procedure hauptprogramm()

If OpenWindow(0, 0, 0, 360, 270, "Bilgisayar ne zaman kapatsın?", #PB_Window_SystemMenu |#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget| #PB_Window_ScreenCentered)

If LoadFont(1, "Arial", 9) 
     SetGadgetFont(#PB_Default, FontID(1)) 
EndIf
      
    If CreateGadgetList(WindowID(0))
    TextGadget(0, 80,  10, 250, 20, "Lütfen bilgisayarın kapatma zamanını girin")
    TextGadget(1, 70,  40, 120, 20, "Tarihi işaretleyin")
    TextGadget(2, 245,  40, 40, 20, "Saat")
    TextGadget(3, 290,  40, 120, 20, "Dakikka")
    CalendarGadget(4, 10, 70, 210, 180)
    
    
    SpinGadget     (5, 240, 70, 40, 20, 0, 23,#PB_Spin_ReadOnly |#PB_Spin_Numeric)
    SetGadgetState (5, 0) 
    SpinGadget     (6, 295, 70, 40, 20, 0, 59,#PB_Spin_ReadOnly |#PB_Spin_Numeric)
    SetGadgetState (6, 0)
   
    ButtonGadget(7, 240, 150, 100, 30, "Tamam")
   
    EndIf
 

    Repeat
    
      EventID     = WaitWindowEvent(1000) 
      EventGadget = EventGadget() 
      EventWindow = EventWindow() 
      MenuID      = EventMenu() 
    
    
        Select EventID 
          Case #PB_Event_CloseWindow 
        
            Select EventWindow 
              Case 0         :  quit =1      
            EndSelect
    
          Case #PB_Event_Gadget  
        
            Select EventWindow 
          
              Case 0
            
               Select EventGadget 
              
                Case 5
                  
                  SetGadgetText(5, Str(GetGadgetState(5)))
                  
                Case 6
                  
                  SetGadgetText(6, Str(GetGadgetState(6)))  
                 
                Case 7
                      
                      datuml.l = GetGadgetState(4)
                      abschaltjahrs.s=Str(Year(datuml.l))
                      abschaltmonats.s=Str(Month(datuml.l))
                      abschalttags.s=Str(Day(datuml.l))
                      abschaltstundes.s = Str(GetGadgetState(5)) 
                      abschaltminutes.s = Str(GetGadgetState(6)) 
                      
                      abschaltjahrl.l=Year(datuml.l)
                      abschaltmonatl.l=Month(datuml.l)
                      abschalttagl.l=Day(datuml.l)
                      abschaltstundel.l = GetGadgetState(5) 
                      abschaltminutel.l = GetGadgetState(6) 
                      
                      SetWindowState(0, #PB_Window_Minimize) 
                      ;HideWindow(0, 1)
                               
               EndSelect             
                           
            EndSelect
          
        EndSelect         
                      datums.s=FormatDate("%dd:%mm:%yyyy    %hh:%ii:%ss",Date())
                      jahrs.s=FormatDate("%yyyy",Date())
                      monats.s=FormatDate("%mm",Date())
                      tags.s=FormatDate("%dd",Date())
                      stundes.s=FormatDate("%hh",Date())
                      minutes.s=FormatDate("%ii",Date())
                      sekundes.s=FormatDate("%ss",Date())

                      jahrl.l=Val(jahrs.s)
                      monatl.l=Val(monats.s)
                      tagl.l=Val(tags.s)
                      stundel.l=Val(stundes.s)
                      minutel.l=Val(minutes.s)

;Debug datums.s+"  "+jahrs.s+"  "+monats.s+"  "+tags.s+"  "+stundes.s+"  "+minutes.s+"  "+sekundes.s
                      
;Debug abschaltjahrs.s+"  "+abschaltmonats.s+"  "+abschalttags.s+"  "+abschaltstundes.s+"  "+abschaltminutes.s           
                      
                       
                      If abschaltjahrl.l=jahrl.l
                        If abschaltmonatl.l=monatl.l
                           If abschalttagl.l=tagl.l
                              If abschaltstundel.l=stundel.l
                                  If abschaltminutel.l=minutel.l
                                  
                                    ExitWindows(#EWX_SHUTDOWN) 
                                    
                                    ;Debug "Abschaltzeit"
                                    
                                  EndIf
                              EndIf
                           EndIf
                        EndIf 
                      EndIf  
                           
                   
     Until quit=1     
                            
 EndIf          
    

EndProcedure

hauptprogramm()

End

Verfasst: 10.10.2007 22:04
von Scarabol
Hi,

also die Leute aus der IT haben erstma recht, Windows müllt sich quasi selber zu....

Du könntest SetSystemPowerState_() verwenden, allerdings kann ich dir gerade nicht sagen wie du die Parameter setzten musst, da mir RAM-Alive und Hibernate-Technik nix sagen... :?

Gruß
Scarabol

Verfasst: 11.10.2007 09:42
von Tafkadasom2k5
RamAlive (Stand-By):
PC wird heruntergefahren, Arbeitsspeicher bleibt bestehen- Mainboard versorgt den RAM und seinen Manager mit Energie, sodass die Daten nicht verloren gehen.
Pro -> schnelle Aufweck-Zeit, keine Nutzung der HD, man kann sofort da weiterarbeiten wo man "aufgehört" hat (auch Fester und Programmzustände bleiben bestehen)
Kontra -> verbraucht minimal Energie, sollte also nur für ein paar Stunden im Akkubetrieb genutzt werden (Abnutzung des Rams :mrgreen: )

Hibernate (Ruhezustand):
PC wird heruntergefahren, der komplette Arbeitsspeicher wird auf die Festplatte geschrieben. Der PC ist komplett aus, verbraucht keinen Strom. Beim nächsten Hochfahren wird beim Starten von Windows das Hibernate-Flag geprüft, und falls vorhanden, wird von der Festplatte "bit-für-bit" der Zustand vor dem Herunterfahren eingelesen.
Pro -> kein Akkuverbrauch, schneller als Hochfahren, man kann nach kurzem Hochfahren sofort weitermachen wo man aufgehört hat (wie RAM-Alive)
Kontra -> wenn man das zu oft macht, müllt sich der Arbeitsspeicher natürlich mit den auf der Arbeit vorgekommenen Sachen zu, unter Umständen also langsamer, braucht länger zum Hochfahren als "Keep-Alive"

Verfasst: 11.10.2007 09:51
von edel
Scarabol hat geschrieben:Hi,
also die Leute aus der IT haben erstma recht, Windows müllt sich quasi selber zu....
Wenn dem so waere duerfte es keine Windows Server geben. Auch mein
Rechner wird nicht langsamer nur weil da Windows eine Weile laeuft.

Verfasst: 11.10.2007 10:30
von gekkonier
Auf einem Server werden im Normalfall ja Applikationen nicht dauernd gestartet und beendet -> es laufen überwiegend Dienste und Programme kontinuierlich, dadurch ist die Fragmentierung im Speicher nicht so derb wie bei Workstations.

Verfasst: 11.10.2007 21:33
von Scarabol
@edel
Ich habs jetzt schon von meherern Quellen gehört..., vor allem von unseren Linux Jüngern ;-)

Gruß
Scarabol

Verfasst: 12.10.2007 11:27
von Tafkadasom2k5
Scarabol hat geschrieben:@edel
Ich habs jetzt schon von meherern Quellen gehört..., vor allem von unseren Linux Jüngern ;-)
Und deshalb gibst du ihnen pauschal Recht?! :?
Das klang zumindest in deinem Post davor so.

Klar hat Windows was das angeht seine Nachteile, was ihm aber keinesfalls die Daseinsberechtigung entzieht. Hat schon seine Gründe, warum das doch so oft genutzt wird- wenn auch (verständlicherweise) nicht hauptsächlich. Kommt eben ganz auf die Umgebung und die Anforderungen drauf an.

Edit: Zudem man die Zumüll-Behauptung auch auf Nichtwissen der jeweiligen Betreiber der Server zurückführen könnte- hab jetzt nioch nichts derartig gravierendes in dem Bereich feststellen können.

Verfasst: 12.10.2007 13:19
von Scarabol
Nicht schießen :shock:

ich bin auch PRO WinXP :)

Ich geb niemandem pauschal recht, aber wenn es keine Gegenstimme gibt, naja was bleibt übrig....

Gruß
Scarabol