Automatisches Ausschalten / Herunterdimmen verhindern

  • Zitat

    Original von my-key


    ...


    PS. andere Frage, denn ich denke, dass die auch mit der Registry zu tun hat:
    könnte man das automatische Abdunkeln im Batterie-Betrie deaktivieren ?



    Persönlich beschäftige ich mich jetzt seit fast einem halben Jahr damit, meinem E4230 das Stromfressen ab zu
    gewöhnen, und "das automatische Abdunkeln im Batterie-Betrieb deaktivieren" frißt und frißt Strom.


    Gleichwohl beantworte ich diese Frage hiermit wie folgt gerne.




    Jedes Medion-PNA (das ich kenne) hat zwei VONEINANDER UNABHÄNGIGE Einstellmöglichkeiten bezüglich der Helligkeit.
    Die erste ist die "PNA" Einstellmöglichkeit via Controlpanel und die


    zweite ist die "GoPAL" Einstellmöglichkeit
    via jeweiligem Skin. Läuft "GoPAL", gelten die "PNA" Einstellungen für diese Zeit nicht unbedingt. Wenn "GoPAL"
    verlassen (beendet) wird, gelten wieder die "PNA" Einstellungen hinsichtlich der Helligkeit.


    Manche Anwendungen haben ihre eigenen Einstellungen.



    I. Die Grundlagen


    A:
    Autosuspend abschalten oder ändern


    In der Systemsteuerung gibt es ein Control zur Konfiguration des automatischen Abschaltens (Autosuspend) bei
    Akku- und Netzbetrieb. Läuft die Stromversorgung über Akku, ist ein automatisches Ausschalten nach einigen
    Minuten ohne Benutzereingabe sinnvoll, um den Akku zu schonen. Ab und an stört dieses Stromspar-Feature
    aber, zum Beispiel beim Musikhören (sofern der verwendete Player nicht von sich aus das Abschalten unterbindet).
    Über die Systemsteuerung läßt sich der Autosuspend bei Akku-Betrieb auf den meisten Geräten nicht deaktivieren.
    Zudem sind die wählbaren Zeiträume im Control hart codiert mit den Werten eine, zwei, drei, vier und fünf Minuten,
    Zwischenwerte und längere oder kürzere Zeiträume lassen sich nur manuell über die Registry einstellen.
    Der zugehörige Schlüssel findet sich unter


    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\BattPowerOff


    Angegeben ist die Zeitspanne bis zum automatischen Abschalten in Sekunden, also z.B. "180" (oder hex "B4") für drei
    Minuten. Um die Autosuspend-Funktion abzuschalten, muß hier ein Wert von "0" eingetragen werden.


    Analog zum Akku-Betrieb läßt sich der Abschaltautomatismus auch für den den Netzbetrieb einstellen. Der zugehörige
    Schlüssel dafür heißt


    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\ExtPowerOff


    Zu beachten ist, dass diese beiden Registry-Einträge nur die Autosuspend-Funktion steuern, nicht aber das automatische
    Herunterdimmen der Display-Hintergrundbeleuchtung! Auch werden die hier genannten Änderungen in der Registry
    erst nach einem Softreset wirksam, gehen diese überdies mit jedem Hardreset verloren.



    B:
    Automatisches Herunterdimmen bei Akku-Betrieb verhindern


    Es gibt da z.Bsp. die Software SmartLight Automatic Backlight 1.1, seit dem 18. Juni 2009 erhältlich. Ob die auch auf Medion PNAs läuft,
    muss erst ausprobiert werden ( wer opfert US$ 6.99? ) und die Software PocketTV Classic v1.4.4 - eine freeware



    Die betreffenden Registry-Einträge sind


    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts\Standard\ACUserIdle


    und


    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts\Standard\BattUserIdle


    Um das automatische Herunterdimmen abzuschalten, muß hier ein Wert von "0" eingetragen werden.



    Zu beachten ist, dass die hier genannten Änderungen in der Registry
    erst nach einem Softreset wirksam werden, diese überdies mit jedem Hardreset verloren gehen.



    II: Die Realisierung mit MortScript



    A:
    Allgemeine Lösung




    ################################################################
    #
    # CE_DIMMER_PROMPT.mscr
    #
    # 2009-09-12
    # jwoegerbauer
    # GNU General Public License (GPL), Version 2, June 1991
    #
    # Notes:
    #
    # This script is temporarily
    # overriding these registry settings
    #
    # [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power]
    # "BattPowerOff"=dword:00000000
    # "ExtPowerOff"=dword:00000000
    #
    # [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts]
    # "ACUserIdle"=dword:00000001
    # "BattUserIdle"=dword:00000001
    #
    # The ini-template to be used
    #
    # ;CeDimmer.ini
    # ;
    # [UserIdle]
    # BattUserIdle=0
    # ACUserIdle=0
    # [PowerOff]
    # BattPowerOff=0
    # ExtPowerOff=0
    # [Installation]
    # DeActivated=0
    # StandardVals=0
    #
    ################################################################
    #
    ErrorLevel("off")
    Local()
    #
    # set-up INI specific vars
    #
    Set INI, \
    "\My Flash Disk\navigation\menu\desktop\CeDimmer.ini"
    Set INI_IDLE_SECTION, "UserIdle"
    Set INI_POWER_SECTION, "PowerOff"
    Set INI_INSTALLATION_SECTION, "Installation"
    #
    # set-up REG specific vars
    #
    Set REG_IDLE_HIVE, "HKLM"
    Set REG_IDLE_PATH, \
    "System\CurrentControlSet\Control\Power\Timeouts\Standard"
    Sleep 50
    Set REG_POWER_HIVE, "HKLM"
    Set REG_POWER_PATH, \
    "System\CurrentControlSet\Control\Power"
    Sleep 50
    #
    #
    If (not FileExists( %INI% ))
    #
    # simply create a new one
    #
    WriteFile( %INI%, ";CeDimmer.ini^NL^", 1 )
    WriteFile( %INI%, ";^NL^", 1 )
    WriteFile( %INI%, "[UserIdle]^NL^", 1 )
    Sleep 100
    WriteFile( %INI%, "BattUserIdle=0^NL^", 1 )
    WriteFile( %INI%, "ACUserIdle=0^NL^", 1 )
    Sleep 100
    WriteFile( %INI%, "[PowerOff]^NL^", 1 )
    WriteFile( %INI%, "BattPowerOff=0^NL^", 1 )
    WriteFile( %INI%, "ExtPowerOff=0^NL^", 1 )
    Sleep 100
    WriteFile( %INI%, "[Installation]^NL^", 1 )
    WriteFile( %INI%, "DeActivated=0^NL^", 1 )
    WriteFile( %INI%, "StandardVals=0^NL^", 1 )
    Sleep 100
    #
    EndIf
    #
    # adjust to your needs
    #
    Set fontSize, "22"
    Set fontName, "Verdana"
    Set lineHeight, "30"
    options[1] = "Windows CE Dimmer Deaktivieren"
    options[2] = "Windows CE Dimmer Aktivieren"
    options[3] = " "
    options[4] = "Programm CeDimmer Deinstallieren"
    Sleep 100
    #
    # present dialogue to user
    #
    SetChoiceEntryFormat(%lineHeight%, %fontSize%, %fontName%)
    Choice("CeDimmer Optionen", \
    "^NL^^NL^CeDimmer Optionen^NL^^NL^", options)
    Case( 1 )
    #
    # we don't want to do things twice
    #
    If( NOT IniRead( %INI%, %INI_INSTALLATION_SECTION%, "DeActivated" ))
    #
    # attempt to read current (standard) registry settings
    #
    StandardVals = 0
    If(RegKeyExists( %REG_IDLE_HIVE%, %REG_IDLE_PATH% ))
    #
    # remember this fact
    StandardVals = 1
    IniWrite( %INI%, %INI_INSTALLATION_SECTION%, \
    "StandardVals", "1" )
    Sleep 50
    #
    # and read in the vals from there
    BattUserIdle = \
    RegRead (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "BattUserIdle")
    ACUserIdle = \
    RegRead (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "ACUserIdle")
    Sleep 100
    #
    EndIf
    #
    #
    BattPowerOff = \
    RegRead (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "BattPowerOff")
    ExtPowerOff = \
    RegRead (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "ExtPowerOff")
    Sleep 100
    #
    # save current registry settings
    #
    If ( StandardVals )
    IniWrite( %INI%, %INI_IDLE_SECTION%, \
    "BattUserIdle", BattUserIdle )
    IniWrite( %INI%, %INI_IDLE_SECTION%, \
    "ACUserIdle", ACUserIdle )
    Sleep 100
    EndIf
    #
    #
    IniWrite( %INI%, %INI_POWER_SECTION%, \
    "BattPowerOff", BattPowerOff )
    IniWrite( %INI%, %INI_POWER_SECTION%, \
    "ExtPowerOff", ExtPowerOff )
    Sleep 100
    #
    # set our registry settings
    #
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "BattUserIdle", 0)
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "ACUserIdle", 0)
    Sleep 100
    RegWriteDword (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "BattPowerOff", 0)
    RegWriteDword (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "ExtPowerOff", 0)
    Sleep 100
    #
    # re-set flag
    #
    IniWrite( %INI%, %INI_INSTALLATION_SECTION%, \
    "DeActivated", "1")
    Sleep 50
    #
    # re-start system
    #
    Reset
    #
    EndIf
    #
    #
    Case( 2 )
    #
    # we don't want to do things twice
    #
    If(IniRead( %INI%, %INI_INSTALLATION_SECTION%, "DeActivated" ))
    #
    # retrieve default registry settings
    #
    StandardVals = IniRead( %INI%, %INI_INSTALLATION_SECTION%, \
    "StandardVals" )
    If( StandardVals )
    BattUserIdle = \
    IniRead ( %INI%, %INI_IDLE_SECTION%, \
    "BattUserIdle")
    ACUserIdle = \
    IniRead ( %INI%, %INI_IDLE_SECTION%, \
    "ACUserIdle")
    Sleep 100
    EndIf
    #
    #
    BattPowerOff = \
    IniRead ( %INI%, %INI_POWER_SECTION%, "BattPowerOff")
    ExtPowerOff = \
    IniRead ( %INI%, %INI_POWER_SECTION%, "ExtPowerOff")
    Sleep 100
    #
    # restore default registry settings
    #
    If( StandardVals )
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "BattUserIdle", BattUserIdle)
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "ACUserIdle", ACUserIdle)
    Sleep 100
    EndIf
    RegWriteDword (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "BattPowerOff", BattPowerOff)
    RegWriteDword (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "ExtPowerOff", ExtPowerOff)
    Sleep 100
    #
    # re-set flag
    #
    IniWrite( %INI%, %INI_INSTALLATION_SECTION%, \
    "DeActivated", "0")
    Sleep 50
    #
    # re-start system
    #
    Reset
    #
    EndIf
    #
    #
    Case( 3
    #
    # nothing to do
    #
    Case( 4 )
    #
    #
    If( IniRead( %INI%, %INI_INSTALLATION_SECTION%, "DeActivated" ))
    #
    # retrieve default registry settings
    #
    StandardVals = IniRead( %INI%, %INI_INSTALLATION_SECTION%, \
    "StandardVals" )
    If( StandardVals )
    BattUserIdle = \
    IniRead ( %INI%, %INI_IDLE_SECTION%, "BattUserIdle")
    ACUserIdle = \
    IniRead ( %INI%, %INI_IDLE_SECTION%,"ACUserIdle")
    Sleep 100
    EndIf
    #
    #
    BattPowerOff = \
    IniRead ( %INI%, %INI_POWER_SECTION%, "BattPowerOff")
    ExtPowerOff = \
    IniRead ( %INI%, %INI_POWER_SECTION%, "ExtPowerOff")
    Sleep 100
    #
    # restore default registry settings
    #
    If( StandardVals )
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "BattUserIdle", BattUserIdle)
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "ACUserIdle", ACUserIdle)
    Else
    #
    # completely remove these entries
    #
    RegDeleteKey( %REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "BattUserIdle" )
    RegDeleteKey(%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "ACUserIdle" )
    EndIf
    Sleep 100
    RegWriteDword (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "BattPowerOff", BattPowerOff)
    RegWriteDword (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "ExtPowerOff", ExtPowerOff)
    Sleep 100
    EndIf
    #
    # finally remove all related entries in \My Flash Disk
    #
    files[1] = "\My Flash Disk\navigation\menu\desktop\CeDimmer.xml"
    files[2] = "\My Flash Disk\navigation\menu\desktop\CeDimmer.png"
    files[3] = "\My Flash Disk\navigation\menu\desktop\CeDimmer.ini"
    files[4] = "\My Flash Disk\programme\MortScript\CE_DIMMER_PROMPT_EXE"
    files[5] = "\My Flash Disk\programme\MortScript\CE_DIMMER_PROMPT.mscr"
    Sleep 100
    For i = 1 To ElementCount(files) Step 1
    Delete( files[i] )
    Sleep 50
    Next
    #
    # re-start system
    #
    Reset
    #
    #
    EndChoice
    #
    #
    Exit
    #
    ################################################################



    B:
    Spezielle Lösung



    ################################################################
    #
    # XXX_STAY_ALIVE.mscr
    #
    # jwoegerbauer 06/14/2009
    # GNU General Public License (GPL), Version 2, June 1991
    #
    #
    # Abstract:
    # Basic script to set no timeouts and full brightness
    # while using specific XXX_application
    #
    # Take control over your backlight. Want it to stay on longer
    # or not turn off when running a specific application?
    # When running certain applications you are limited to your
    # default backlight time out of just a few seconds. Ever wanted
    # to way to just leave the backlight on? Using a GPS application
    # for navigation and the screen keeps turning off?
    #
    # XXX_STAY_ALIVE might be the solution for you.
    #
    ################################################################
    #
    ErrorLevel("off")
    Local()
    #
    ################################################################
    #
    # IMPORTANT --- IMPORTANT --- IMPORTANT --- IMPORTANT
    #
    # change application to run here
    Set STAY_ALIVE_APP, "\My Flash Disk\My Apps\MyApp.exe"
    #
    ################################################################
    #
    #
    Set CURR_TIMEOUTS, "System\CurrentControlSet\Control\Power\Timeouts"
    Set CURR_BACKLIGHT, "ControlPanel\Backlight"
    #
    # read current registry settings
    BattSuspendTimeout = \
    RegRead ("HKLM", %CURR_TIMEOUTS%,"BattSuspendTimeout")
    ACSuspendTimeout = \
    RegRead ("HKLM", %CURR_TIMEOUTS%,"ACSuspendTimeout")
    BatteryTimeout = \
    RegRead ("HKCU", %CURR_BACKLIGHT%, "BatteryTimeout")
    ACTimeout = \
    RegRead ("HKCU", %CURR_BACKLIGHT%, "ACTimeout")
    Brightness = \
    RegRead ("HKCU", %CURR_BACKLIGHT%, "Brightness")
    ACBrightness = \
    RegRead ("HKCU", %CURR_BACKLIGHT%, "ACBrightness")
    #
    # set registry settings
    RegWriteDword ("HKLM", %CURR_TIMEOUTS%, "BattSuspendTimeout",0)
    RegWriteDword ("HKLM", %CURR_TIMEOUTS%, "ACSuspendTimeout",0)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "BatteryTimeout", 0)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "ACTimeout", 0)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "Brightness", 10)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "ACBrightness", 10)
    #
    # run the application
    RunWait (%STAY_ALIVE_APP%)
    #
    # restore registry settings back to normal use mode
    RegWriteDword ("HKLM", %CURR_TIMEOUTS%, "BattSuspendTimeout", \
    BattSuspendTimeout)
    RegWriteDword ("HKLM", %CURR_TIMEOUTS%, "ACSuspendTimeout",\
    ACSuspendTimeout)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "BatteryTimeout", \
    BatteryTimeout)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "ACTimeout", \
    ACTimeout)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "Brightness", \
    Brightness)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "ACBrightness", \
    ACBrightness)
    #
    #
    Exit
    #
    ################################################################



    Falls ein nachhaltiges Interesse an der allg. Lösung besteht, bin ich gerne bereit ein Installationspaket zu schnüren
    und dieses hier zu veröffentlichen.

  • Super dass du dich des Themas angenommen und den Fred hier aufgemacht hast :tup


    da ich sehr häufig ohne das lästige Stromkabel anzustecken herumfahre (Akku hält dafür ca. 3 Stunden) und mich dann das automatische Abdunkeln stört wäre ich an einer Lösung sehr interessiert. (kenne mich selber aber mit den mort-Dingen überhaupt nicht aus.)


    wenn keine weiteren Meldungen kommen werde ich mal die Registry-Geschichten probieren ...


    THX
    my-key

  • CE_DIMMER_PROMPT.mscr


    Habe noch zwei (Schönheits-) Fehler entdeckt - nachstehend rot kenntlich gemacht,
    der in allen bisher gezogenen Kopien behoben werden sollte, ansonsten der Original-
    zustand von Windows CE nur zum Teil wieder hergestellt wird:


    ...



    Case( 2 )
    #
    # we don't want to do things twice
    #
    If(IniRead( %INI%, %INI_INSTALLATION_SECTION%, "DeActivated" ))
    #
    # retrieve default registry settings
    #
    StandardVals = IniRead( %INI%, %INI_INSTALLATION_SECTION%, \
    "StandardVals" )
    If( StandardVals )
    BattUserIdle = \
    IniRead ( %INI%, %INI_IDLE_SECTION%, \
    "BattUserIdle")
    ACUserIdle = \
    IniRead ( %INI%, %INI_IDLE_SECTION%, \
    "ACUserIdle")
    Sleep 100
    EndIf
    #
    #
    BattPowerOff = \
    IniRead ( %INI%, %INI_POWER_SECTION%, "BattPowerOff")
    ExtPowerOff = \
    IniRead ( %INI%, %INI_POWER_SECTION%, "ExtPowerOff")
    Sleep 100
    #
    # restore default registry settings
    #
    If( StandardVals )
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "BattUserIdle", BattUserIdle)
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "ACUserIdle", ACUserIdle)

    Else
    #
    # completely remove these entries
    #
    RegDeleteKey( %REG_IDLE_HIVE%, %REG_IDLE_PATH%, 1, 1 )


    EndIf
    Sleep 100


    RegWriteDword (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "BattPowerOff", BattPowerOff)
    RegWriteDword (%REG_POWER_HIVE%, %REG_POWER_PATH%, \
    "ExtPowerOff", ExtPowerOff)
    Sleep 100
    #
    # re-set flag
    #
    IniWrite( %INI%, %INI_INSTALLATION_SECTION%, \
    "DeActivated", "0")
    Sleep 50
    #
    # re-start system
    #
    Reset
    #
    EndIf
    #
    #


    ...



    Case( 4 )
    #
    #
    If( IniRead( %INI%, %INI_INSTALLATION_SECTION%, "DeActivated" ))
    #
    # retrieve default registry settings
    #
    StandardVals = IniRead( %INI%, %INI_INSTALLATION_SECTION%, \
    "StandardVals" )
    If( StandardVals )
    BattUserIdle = \
    IniRead ( %INI%, %INI_IDLE_SECTION%, "BattUserIdle")
    ACUserIdle = \
    IniRead ( %INI%, %INI_IDLE_SECTION%,"ACUserIdle")
    Sleep 100
    EndIf
    #
    #
    BattPowerOff = \
    IniRead ( %INI%, %INI_POWER_SECTION%, "BattPowerOff")
    ExtPowerOff = \
    IniRead ( %INI%, %INI_POWER_SECTION%, "ExtPowerOff")
    Sleep 100
    #
    # restore default registry settings
    #
    If( StandardVals )
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "BattUserIdle", BattUserIdle)
    RegWriteDword (%REG_IDLE_HIVE%, %REG_IDLE_PATH%, \
    "ACUserIdle", ACUserIdle)
    Else
    #
    # completely remove these entries
    #

    RegDeleteKey( %REG_IDLE_HIVE%, %REG_IDLE_PATH%, 1,1 )



    EndIf


    ...

  • Hallo Jörg,


    vielen Dank für das Tool - funktioniert bestens. :applaus
    kleine Korrektur bzgl. der Einbindung in GoPal 5.
    Dort muss die xml-Datei im menu/desktop-Pfad etwas anders aussehen ...
    An der Stelle wird zwar auch Gopal resolut per Softreset beendet, aber was solls.
    Eine Einbindung in das Menü außerhalb von GoPal ist vermutlich etwas schmerzfreier ;D


    my-key


  • Das ist es was der Mensch braucht: Erfolgserlebnisse. Deshalb danke für
    Deine Positiv-Meldung.



    [EDIT]


    Der Aufruf von MortScripts RESET-Funktion kann m.M. nach durch


    SendMessage() / PostMessage() mit HWND_BROADCAST als erstem
    Parameter und WM_SETTINGSCHANGE als zweiten Parameter


    ersetzt werden, wenn ein Soft-Reset nicht erfolgen soll.


    WM_SETTINGSCHANGE hat einen PChar-Parameter, der zeigt welcher Teil
    der registry gerade verändert wurde.



    Siehe auch hier.

    Einmal editiert, zuletzt von jwoegerbauer ()