2 Beispielcodes [WinAPI]

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

2 Beispielcodes [WinAPI]

Beitrag von RSBasic »

Fenstereinstellungen speichern und wiederherstellen

Mit diesem Code können die Fenstereinstellungen wie Größe und Position vollständig gespeichert und wiederhergestellt werden, ohne dass man diese jeweils einzeln ermitteln muss. (WindowWidth(), WindowHeight(), WindowX(), WindowY(), GetWindowState())

Code: Alles auswählen

EnableExplicit

Define EventID
Define hWndPM.WINDOWPLACEMENT

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
  ButtonGadget(1,10,10,200,20,"1. Fenstereinstellungen speichern",0)
  TextGadget(2,10,40,480,20,"2. Jetzt verändere z.B. die Fenstergröße und die Fensterposition.",0)
  ButtonGadget(3,10,60,200,20,"3. Fenstereinstellungen wiederherstellen",0)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
        Case 1
          GetWindowPlacement_(WindowID(0),hWndPM)
        Case 3
          SetWindowPlacement_(WindowID(0),hWndPM)
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

;SetWindowPlacement: http://msdn.microsoft.com/en-us/library/ms633544%28v=vs.85%29.aspx
;GetWindowPlacement: http://msdn.microsoft.com/en-us/library/ms633518%28v=vs.85%29.aspx

Batterie-Statusinformationen ermitteln

Mit diesem Code können die Statusinformationen einer Batterie ermittelt werden:

Code: Alles auswählen

EnableExplicit

Define SysPS.SYSTEM_POWER_STATUS

GetSystemPowerStatus_(SysPS)

Select SysPS\ACLineStatus & $FF
  Case 0
    Debug "Es wurde kein externes Netzteil angeschlossen."
  Case 1
    Debug "Externes Netzteil ist angeschlossen."
  Case 2
    Debug "Es konnte nicht ermittelt werden, ob ein externes Netzteil angeschlossen ist."
EndSelect

Select SysPS\BatteryFlag & $FF
  Case 1
    Debug "Die Batterie ist über 66 % aufgeladen."
  Case 2
    Debug "Die Batterie ist weniger als 33 % aufgeladen."
  Case 4
    Debug "Die Batterie ist fast leer."
  Case 8
    Debug "Die Batterie wird gerade aufgeladen."
  Case 128
    Debug "Es konnte keine Batterie gefunden werden."
  Case 255
    Debug "Fehler beim Auslesen."
EndSelect

;Diese Daten nur dann abfragen, wenn Batterie angeschlossen ist, da sonst 255 zurückgegeben wird.
Debug "Gesamt-Zeit: "+Str(SysPS\BatteryFullLifeTime & $FF)
Debug "In Prozent: "+Str(SysPS\BatteryLifePercent & $FF)
Debug "Verbleibende Zeit: "+Str(SysPS\BatteryLifeTime & $FF)

;GetSystemPowerStatus: http://msdn.microsoft.com/en-us/library/aa372693%28v=vs.85%29.aspx
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild