Bildschirm ein/aus- schalten

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Code: Alles auswählen

#SC_MONITORPOWER = $F170

MessageRequester("Monitor-Spielereien","Monitor ausschalten...",0)
SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_MONITORPOWER, 2)
Delay(2000)

MessageRequester("Monitor-Spielereien","Monitor StandBy schalten...",0)
SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_MONITORPOWER, 1)
Delay(2000)

MessageRequester("Monitor-Spielereien","Monitor einschalten...",0)
SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_MONITORPOWER, -1)
Delay(2000)
Quelle: http://board.softpedia.com/lofiversion/ ... p/t92.html

Funktioniert sogar. :allright:

Aber kann mir einer den Unterschied zwischen Monitor ausschalten und Monitor Stand-By-schalten erklären?
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Aber kann mir einer den Unterschied zwischen Monitor ausschalten und
> Monitor Stand-By-schalten erklären?

Der Hauptunterschied liegt wohl im Stromverbrauch, der bei ausgeschaltetem
Montor so gegen Null tendieren wird.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Aber diese beiden Codes tun dasselbe (in meinen Augen). Und laut Beschreibung schaltet der eine den Bildschirm aus, während der Andere nur den StandBy-Betrieb einschaltet.

Wo ist hier der Unterschied (bis auf die eine Zahl)?

Code: Alles auswählen

#SC_MONITORPOWER = $F170

MessageRequester("Monitor-Spielereien","Monitor ausschalten...",0)
SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_MONITORPOWER, 2)
Delay(2000) 

Code: Alles auswählen

#SC_MONITORPOWER = $F170

MessageRequester("Monitor-Spielereien","Monitor StandBy schalten...",0)
SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_MONITORPOWER, 1)
Delay(2000) 
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Monstalocke
Beiträge: 12
Registriert: 04.01.2005 14:38

Beitrag von Monstalocke »

hey cool danke,
habt ihr vielleicht noch ne Ahnung wie ich raus krieg ob der Bildschirm eingeschaltet ist oder nicht?
crX
Beiträge: 21
Registriert: 29.12.2004 17:29
Wohnort: Dort wo's leckcher Fondüü hat

Beitrag von crX »

auf das kleine lämpchen schaun :lol:

@Laurin: Bei mir kommt da auch dasselbe Resutat raus.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Es ist vermutlich eine Frage der Definition...

Meine Definition ist, das beim ausschalten ich ein Schalter am gerät (ein netzschalter; nicht ein taster) drücken muß, da das komplette Gerät keinen Saft>Funktion hat. Ergo kann man ein ausgeschaltetes Gerät nicht per Software wieder einschalten...
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

vielleicht so?

Code: Alles auswählen

Procedure SetSuspendState(Hibernate.l, ForceCritical.l, DisableWakeEvent)
 DLL = OpenLibrary(#PB_Any, "Powrprof.dll")
 CallFunction(DLL, "SetSuspendState", Hibernate, ForceCritical, DisableWakeEvent)
 CloseLibrary(DLL)
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

vorher überprüfen obs geht:

Code: Alles auswählen

Procedure IsPwrSuspendAllowed()
 DLL = OpenLibrary(#PB_Any, "Powrprof.dll")
 Result = CallFunction(DLL, "IsPwrSuspendAllowed")
 CloseLibrary(DLL)
 ProcedureReturn Result
EndProcedure
Zuletzt geändert von ts-soft am 20.03.2011 13:04, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
OnkelM
Beiträge: 7
Registriert: 17.03.2011 15:21

Re: Bildschirm ein/aus- schalten

Beitrag von OnkelM »

Leider funktioniert hier der API aufruf nicht. Debug #HWND_BROADCAST gibt auch nen komischen wert, oder besser gesagt, ein SendMessage_ damit bringt das Programm zum hängen.

Funktioniert es mit der aktuellen pb version noch ?

Code: Alles auswählen

#SC_MONITORPOWER = $F170 ; = 61808
#WM_SYSCOMMAND   = $112  ; =   274

Procedure SetMonitor(State = 1)
  Select State
    Case 3 ; Wake up
      SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_MONITORPOWER, -1)
    Case 2 ; Shut down
      SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_MONITORPOWER, 2)
    Default; Standby
      SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_MONITORPOWER, 1)
  EndSelect
EndProcedure

OpenWindow(0, #PB_Ignore, #PB_Ignore, 150, 50, "Monitor ausschalten?", #PB_Window_SystemMenu | #PB_Window_Tool)
ButtonGadget(0, 20, 10, 50, 30, "Suspend")
ButtonGadget(1, 80, 10, 50, 30, "Hibernate")

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          SetMonitor()
          Delay(2000)
          SetMonitor(3)
        Case 1
          SetMonitor(2)
          Delay(2000)
          SetMonitor(3)
      EndSelect
  EndSelect
ForEver

End
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Bildschirm ein/aus- schalten

Beitrag von c4s »

Liegt nicht an der Version von PureBasic sondern eher an deiner Windows-Version bzw. den entsprechenden Einstellungen bezüglich Stromsparen etc.

Hier auf Windows XP funktioniert es.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Antworten