Code-Beispiel
PowerZustände unter Windows
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | ytwinky | 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 ytwinky angelegt.
- Die aktuellste Version wurde am 28.01.2011 von ytwinky gespeichert.
|
|