IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Reset soft sur un PocketPC (sous Windows CE 3.0).


Sujet :

Windows

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Reset soft sur un PocketPC (sous Windows CE 3.0).
    Bonjour,

    Dans le cadre d'un développement sous Windows CE 3.0 (cible PDA) avec Visual Embeded, je recherche à forcer un reset soft : détruire toutes les applications lancées.
    En fait, cela reviendrait à appuyer sur le bouton "Reset" du PocketPC.
    Merci de votre aide.

    Jean-Marc

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Salut,

    le code ci-dessous te permet de faire ça.
    Je ne connais pas ton application, mais attention à prévenir l'utilisateur qu'il va perdre toutes ses données non sauvées d'applications ouvertes...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    #include <winioctl.h> 
    
    
    void SoftReset(); 
    
    
    extern "C" __declspec(dllimport) BOOL KernelIoControl(DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned); 
    
    static void ResetWithExitWindows() 
    { 
       HMODULE hModule = ::LoadLibrary(TEXT("aygshell.dll")); 
        
       typedef BOOL (*ExitWindowsExFunction)(UINT uFlags, DWORD dwReserved); 
        
       ExitWindowsExFunction f = (ExitWindowsExFunction)::GetProcAddress(hModule, TEXT("ExitWindowsEx")); 
        
    #ifndef EWX_REBOOT 
    #define EWX_REBOOT   2 
    #endif 
    
       f(EWX_REBOOT, 0); 
        
       FreeLibrary(hModule); 
        
    } 
    
    static void ResetWithSetSystemPowerState() 
    { 
       typedef DWORD (*SetSystemPowerStateFunction)(LPCWSTR pwsSystemState, DWORD StateFlags, DWORD Options); 
       HMODULE hModule = ::LoadLibrary(TEXT("Coredll.dll")); 
        
       SetSystemPowerStateFunction f = (SetSystemPowerStateFunction) 
          ::GetProcAddress(hModule, TEXT("SetSystemPowerState")); 
        
    #ifndef POWER_STATE_RESET 
    #define POWER_STATE_RESET DWORD(0x00800000) 
    #endif 
    
       f(NULL, POWER_STATE_RESET, 0); 
       ::FreeLibrary(hModule); 
    } 
    
    static void ResetWithKernelIoControl() 
    { 
    #ifndef IOCTL_HAL_REBOOT 
    #define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) 
    #endif 
    
       KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL); 
    } 
    
    void SoftReset() 
    { 
       OSVERSIONINFO vi; 
       memset(&vi, 0, sizeof(vi)); 
       vi.dwOSVersionInfoSize = sizeof(vi); 
       VERIFY(GetVersionEx(&vi)); 
       if (vi.dwMajorVersion >= 5) { 
          ResetWithExitWindows(); 
       } else if (vi.dwMajorVersion==4 && vi.dwMinorVersion>=20) { 
          ResetWithSetSystemPowerState(); 
       } else { 
          ResetWithKernelIoControl(); 
       } 
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Merci Karl3i !

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Ctl_code
    Bonjour,

    Dans ton code, tu utilises la macro "CTL_CODE", pour définir (si pas déjà fait) IOCTL_HAL_REBOOT.
    Le compilo ne trouve pas cette macro...
    Où est-elle définie ?

    Jean-Marc

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    La macro CTL_CODE est déclarée dans le fichier windev.h.

    Karl.

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Je n'ai pas ce fichier "windev.h" dans mon environnement de développement !
    J'ai fait une recherche et CTL_CODE n'est présent dans aucun de mes fichiers...
    Ce fichier fait-il parti de Embeded Visual C++ en version OEM, par hazard ?
    Peux-tu me l'envoyer (ou du moins juste la macro, avec la définition des principaux define utilisés avec) ?

    Merci,

    Jean-Marc

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Tu n'as pas le SDK Windows CE ?

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Euh... non !

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Ceci explique cela.
    Pour le télécharger c'est par ici :

    http://www.microsoft.com/downloads/d...displaylang=en

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Oui, je viens d'aller sur le site de téléchargement Microsoft.
    Mais j'ai téléchargé une autre version du SDK que celui que tu me proposes. En effet, le lien me dirige vers le téléchargement d'une veersion du SDK pour Win CE 4.0 sp2, alors que je suis en Win CE 3.0 !
    Alors je suis allé sur le lien : http://www.microsoft.com/downloads/d...DisplayLang=en
    pour télécharger la version "Handheld PC Professional 3.0 SDK".

    Je te tiens au courant !

    Jean-Marc

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    J'ai l'impression que cela ne va pas non plus aller avec ce que je viens de télécharger. En effet, ce SDK s'appui sur Visual C++ 6.0.
    Or, j'ai Embeded Visual C++ 3.0 ...
    Bon, je vais encore chercher.

    Jean-Marc

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    C'est bon ça marche !
    Merci !

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Finalement tu as pu trouver le bon SDK ?

  14. #14
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    En fait le SDK était bien présent sur le CD d'intall, mais il n'avait pas été installé sur le poste !!!
    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Incomprehension sur le Mapping (sous Windows)
    Par TheRealNox dans le forum Langage
    Réponses: 14
    Dernier message: 13/09/2010, 16h47
  2. SNMP sur Oracle 10 sous Windows
    Par Wurlitzer dans le forum Administration
    Réponses: 1
    Dernier message: 10/04/2008, 16h58
  3. lire-ecrire sur port pci sous windows NT
    Par nanard36 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/03/2008, 19h14
  4. Connexion depuis Unix sur serveur Mysql sous Windows
    Par krlou dans le forum Installation
    Réponses: 4
    Dernier message: 01/02/2008, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo