User Passwort
 Passwort speichern Passwort vergessen?
 
 
 
 Alle Foren
 PDA-dev :: Programmierung von Apps
 Softwareentwicklung für Windows Smartphones
 Windows Mobile 2003 "Alarm Bug"
Autor Vorheriges Thema Thema Nächstes Thema  

pda-dev

pda-dev

Forum Admin


554 Beiträge

Erstellt am: 27.10.2004 :  15:13:19 Uhr  Profil anzeigen  Autor eine Email senden  Besuche pda-dev's Homepage  Sende pda-dev eine ICQ Message  Antwort mit Zitat
Wie vielen Pocket PC Benutzern wahrscheinlich bekannt ist, besitzt Windows Mobile 2003 einen Bug, der sich darin auswirkt, dass der PPC bei Alarmen des öfteren einfach aus bleibt und der Besitzer somit unfreiwillig etwas länger schläft oder seine Sitzung verpasst
Diesen Bug bekommt man unter Umständen auch als Entwickler zu spüren. Nämlich dann, wenn man die Funktion CeRunAppAtTime benutzt. Während unter Pocket PC 2002 bei Benutzung dieser Funktion der PPC automatisch angeschalten wird (oder zumindest werden sollte, habe es leider nicht selbst testen können), bleibt er unter WM 2003 meist aus (bzw. in einem Zwischenzustand zwischen Supend und On).
Abhilfe schafft aber die Funktion SetSystemPowerState mit dem Argument POWER_STATE_ON.
In den meisten Fällen ist es daher sinnvoll, z.B. zusätzlich zu dem eigentlich mit CeRunAppAtTime zu startenden Programm auch noch ein Mini-Hilfsprogramm zu starten, welches nichts weiter tut, als den PPC zuverlässig einzuschalten.
Wenn das zu startende Programm eine selbst geschriebene eVC++ -Anwendung ist, kann man alternativ SeSystemPowerState natürlich auch dort erst aufrufen.
Hier möchte ich aber kurz vorstellen, wie das Hilfsprogramm aussieht:
da WM2003 auf Windows CE .NET basiert, benötigt man die eMbedded Visual C++ 4.0 Entwicklungsumgebung und Compiler.
Hiermit erstellt man ein neues Projekt mit folgenden Einstellungen:
Name: PowerOn2003
Typ : WCE Pocket PC 2003 Application - Simple Windows CE Application
Das einzige, was man ändern muss, ist die Datei PowerOn2003.cpp . Diese sollte so aussehen:
 
#include "stdafx.h"
#include <pm.h>
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
SetSystemPowerState(NULL,POWER_STATE_ON,POWER_FORCE);
return 0;
}
 
So einfach ist C++
Nun braucht man das Projekt nur noch für die gewünschte Plattform zu erstellen/kompilieren.
Falls eine Fehlermeldung kommt, dass die Datei pm.h nicht gefunden werden kann, so sollte man diese im Installationsordner des Pocket PC 2003 SDK suchen und ins Projektverzeichnis kopieren.
Für Leute, die sich nicht mit C++ auskennen oder nicht extra die große Entwicklungsumgebung herunterladen möchten, gibt es hier (PowerOn2003.exe) eine für ARMV4 kompilierte Version des Programms zum Download.

Ein Computer wird nie das tun, was du willst - sondern das, was du programmierst!
   

pc-biber

PDA-Programmierer


48 Beiträge

Erstellt  am: 28.10.2004 :  11:05:28 Uhr  Profil anzeigen  Autor eine Email senden  Besuche pc-biber's Homepage  Antwort mit Zitat
Suuuuuper klasse,
es funktioniert Du bist echt der beste.
Es ist echt komisch daß die Funktion SetSystemPowerState nur unter C++ den PPC einschaltet nicht aber mit VB.Net, aber was soll's dann klappt es eben auf diesem Umweg.
Viele Grüße vom PC-Biber

Zum Anfang der Seite

AgentBignose

PDA-Programmierer


38 Beiträge

Erstellt  am: 10.12.2009 :  12:01:07 Uhr  Profil anzeigen  Autor eine Email senden  Besuche AgentBignose's Homepage  Antwort mit Zitat
So funktioniert das Aufwekcne (überwiegend) bei mir auch.
Meine Frage ist:
Kann man einen mit CeRunappattime erstellten aufwachpunkt auch wieder deaktivieren?
Angenommen es wird ein startpunkt für den nächsten Tag gesetzt, bevor der aber eintritt möchte man es wieder rückgänig machen.
Kann man cerunappattime quasi wieder DEregistrieren?
Zum Anfang der Seite
  Vorheriges Thema Thema Nächstes Thema  
Springe nach:
 
  Bookmark & Share  
 
 
 
  Tags  
 
Keine Tags gefunden
 
 
 



pda-dev.de

Quicklinks: Foren-Übersicht | Developer-News | Suche | Impressum

© just-works! Software

Zum Anfang der Seite

Snitz Forums 2000