Ergebnis 1 bis 5 von 5
-
Armin Gast
Hallo.
Weiss jemand wie ich von meinen Programm aus verhindern kann, dass mein Pocket PC in den Standby-Modus geht? Ich programmiere C# mit dem compact framework 3.5. Das Windows auf meinen Pocket PC ist Windows Mobile 6
Dankbar für jeden Tip, Armin
-
entwickelt Apps
- 28.08.2008, 20:02
- #2
Hallo
da sehe ich zwei Fälle:
1) PPC geht automatisch nach x Minuten in den Standby
2) der User drückt die Powertaste
Um 1) zu verhindern könnte man mit einem Timer alle x Sekunden SystemIdleTimerReset() aufrufen.
Bei 2) muss das Drücken der Taste abgefangen werden. Hier bin ich mir nicht sicher, ob das einfach und generell für verschiedene ppcs lösbar ist. Suche mal nach "intercepting hardware button" oder so!
heliosdev
P.S.: Der Akku wird an diesem Programm keine Freude haben!
-
- 28.08.2008, 20:19
- #3
Nun, es geht auch einfacher. Je nach dem, wie sehr sich der Hersteller an das DDK hällt, kannst du
in HKLM\SYSTEM\CurrentControlSet\Control\Power den Wert BattPowerOff und/oder ExtPowerOff auf 0 setzen.
andernfalls SystemIdleTimerReset() über P/Invoke verwenden und in regelmässigen Abständen aufrufen.
Es gibt dazu auch ein sehr schönes, umfassendes Beispiel bei Codeguru: Windows Mobile Power Management:
Code:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Win32; using Microsoft.Win32; namespace PreventSleep { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // Look in the registry to see what the shortest timeout // period is. Note that Zero is a special value with respect // to timeouts. It indicates that a timeout will not occur. // As long as as SystemIdleTimeerReset is called on intervals // that are shorter than the smallest non-zero timeout value // then the device will not sleep from idleness. This does // not prevent the device from sleeping due to the power // button being pressed. int ShortestTimeoutInterval() { int retVal = 1000; RegistryKey key = Registry.LocalMachine.OpenSubKey(@"\SYSTEM\CurrentControlSet\Control\Power"); object oBatteryTimeout = key.GetValue("BattPowerOff"); object oACTimeOut = key.GetValue("ExtPowerOff"); object oScreenPowerOff = key.GetValue("ScreenPowerOff"); if (oBatteryTimeout is int) { int v = (int)oBatteryTimeout; if(v>0) retVal = Math.Min(retVal,v); } if (oACTimeOut is int) { int v = (int)oACTimeOut; if(v>0) retVal = Math.Min(retVal, v); } if (oScreenPowerOff is int) { int v = (int)oScreenPowerOff; if(v>0) retVal = Math.Min(retVal, v); } return retVal*9/10; } private void Form1_Load(object sender, EventArgs e) { // Set the interval on our timer and start the // timer. It will run for the duration of the // program int interval = ShortestTimeoutInterval(); resetTimer.Interval = interval; resetTimer.Enabled = true; } private void miQuit_Click(object sender, EventArgs e) { this.Close(); } // Call the SystemIdleTimerReset method to prevent the // device from sleeping private void resetTimer_Tick(object sender, EventArgs e) { CoreDLL.SystemIdleTimerReset(); } } }
-
Bin neu hier
- 05.02.2009, 12:06
- #4
Wo bekomm ich den die Core.dll her?
Ich kann die nirgends finden.
-
- 05.02.2009, 13:40
- #5
die heisst coredll.dll und ist teil von windows mobile, liegt im \windows-Verzeichnis.
Ähnliche Themen
-
Absturz im Standby
Von mawim im Forum HTC Touch DiamondAntworten: 10Letzter Beitrag: 26.03.2009, 13:10 -
Automatisches Tastatur aufklappen verhindern !
Von Touch User im Forum HTC Touch DiamondAntworten: 8Letzter Beitrag: 22.11.2008, 17:55 -
Automatischer Internetaufbau übers Mobilfunknetz verhindern
Von Unregistriert im Forum HTC Touch DiamondAntworten: 4Letzter Beitrag: 24.07.2008, 10:55 -
Gespräch beenden (Anrufflag verhindern)
Von huefi2 im Forum HTC TouchAntworten: 1Letzter Beitrag: 23.02.2008, 15:30 -
Verhindern dass Anwendung mehrmals gestartet werden kann
Von Roli im Forum ProgrammierenAntworten: 2Letzter Beitrag: 14.01.2005, 11:47
Pixel 10 Serie mit Problemen:...