Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » System

PowerZustände unter Windows

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.Redakteurytwinky 28.01.2011

Ich habe eigentlich eine ganz andere Funktion im Windows-Api finden wollen ^^
Aber so war mir das auch recht, denn für ein Programm mußte ich wissen, ob
der Ruhezustand erlaubt ist oder nicht(um den Button auszublenden).
Natürlich bietet der API-Guide so eine Funktion, doch wenn das da drin steht,
dann lieber erstmal schauen, ob FreeBASIC das auch kann, denn so entfallen
die manchmal nervigen API-Deklarationen. Da 5 Zeilen Code reichlich langweilig
aussehen, habe ich das Programm gleich mehrsprachig gemacht, doch nur, um mal
zu zeigen, wie sowas (auch) gehen kann ;-))
Zugegeben, es mag ein wenig aufgebläht erscheinen, für die Ausgabe von DREI
Systemflags so ein Riesenprogramm zu benutzen, aber es ging irgendwann halt
auch nur noch um die Erweiterung der Sprachen(wobei ich nicht ganz sicher bin,
ob ich in allen Fällen die richtige Wortwahl getroffen habe ^^).
Da jemand mal irgendwo bemängelt hat, dass die Print-Anweisung in FB so langsam ist,
habe ich die Benutzung reduziert, indem ich die Strings ERST zusammenbaue und dann
mit EINER Print-Anweisung ausgebe.
Hier ist es:

#include "windows.bi"
#include "win/powrprof.bi"
Const Esc=!"\27", Lf=!"\n", MaxLng=3, MaxMsg=7, Langs="defs"

Enum
  Allowed=2
  Chose
  Choice
  Shutdown
  Suspend
  Hibernate
End Enum

Dim As String Msg(0 To MaxMsg, 0 To MaxLng)={_
  {"Nein", "No", "Non", "No"},_ '0 -> False
  {"Ja", "Yes", "Oui", "S¡"}_  '1 -> True
  ,{" erlaubt:", " allowed:", " permett‚:", " permetido:"}_ '2 -> Allowed
  ,{!"d=deutsch\n", !"e=english\n", !"f=fran‡ais\n", !"s=espa¤ol\n"}_ '3 -> Chose
  ,{"Auswahl", "Choice", "Choix", "Selecci¢n"}_
  ,{"Runterfahren", "ShutDown", "D‚crocher", "Desconexi¢n"}_
  ,{"StandBy", "Suspend", "Disposition", "Disposici¢n"}_
  ,{"Ruhezustand", "Hibernate", "Hibernation", "Hibernaci¢n"}_ 'so kann einfacher angehängt werden
  }, c=lcase(Command(1)), s=""
Dim As Byte Lng, i

For i=0 To MaxLng
    s+=Msg(Chose, i)
Next
For i=0 To MaxLng
    s+=Msg(Choice, i) &*IIf(i<MaxLng, @"/", @":")
Next
Print s;

If InStr(Langs &Esc, c)=0 Then
    Do
        c=lcase(Input(1))
    Loop Until InStr(Langs &Esc, c)
    If c=Esc Then End
    Print c
End If

Lng=InStr(Langs, c)-1 'Sprache festlegen

Print Msg(ShutDown, Lng)  &Msg(Allowed, Lng) &Msg(Abs(IsPwrShutdownAllowed), Lng) &Lf &_
      Msg(Suspend, Lng)   &Msg(Allowed, Lng) &Msg(Abs(IsPwrSuspendAllowed), Lng) &Lf &_
      Msg(Hibernate, Lng) &Msg(Allowed, Lng) &Msg(Abs(IsPwrHibernateAllowed), Lng);
GetKey

Da das Programm bei mir anzeigt, daß der Ruhezustand nicht erlaubt ist,
gehe ich mal davon aus, dass die anderen Ergebnisse auch richtig sind xD
Gruß
ytwinky


Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 28.01.2008 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 28.01.2011 von Redakteurytwinky gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen