2009-08-07 5 views
2

J'ai une fenêtre d'applications mobiles qui ressemblent à ceci:Gardez une console Windows Mobile App Course

class Program 
{ 
    static void Main(string[] args) 
    { 
     RunHook runHook = new RunHook(); 

    } 
} 

class RunHook 
{ 
    private HookKeys hook; 
    public RunHook() 
    { 
     hook = new HookKeys(); 
     hook.HookEvent += EventForHook; 
    } 

    private void EventForHook(HookEventArgs e, KeyBoardInfo keyBoardInfo, 
     ref Boolean handled) 
    { 
     if ((keyBoardInfo.scanCode == 4) && (keyBoardInfo.vkCode == 114)) 
      handled = true; 
    } 
} 

Il va créer un crochet dans le clavier (je sais qui est mal vu par certains). Mon problème est que j'ai besoin de la méthode Main pour ne jamais revenir. Cela va fonctionner sur les appareils appartenant à mon entreprise et nous utilisons cela pour désactiver les clés du téléphone. Cela semble devoir être simple, mais je suis coincé dessus.

Sur un .NET normal j'appellerais simplement Console.Readline(), mais cela ne fonctionne pas sur Windows Mobile Compact Framework. J'ai aussi essayé Thread.Sleep(0), mais ça ne marche pas non plus.

Merci pour vos commentaires.

Répondre

4

Thread.Sleep(0) dort pendant zéro millisecondes.

Vous voulez probablement Thread.Sleep(Timeout.Infinite).

Vous pouvez également envisager la création d'un EventWaitHandle:

class Program 
{ 
    static public ManualResetEvent StopMain; 

    static void Main(string[] args) 
    { 
     StopMain = new ManualResetEvent(false); 
     RunHook runHook = new RunHook(); 
     StopMain.WaitOne(); // waits until signalled 
    } 
} 

Alors, si vous étiez toujours prêt à quitter Main(), vous pouvez appeler (un autre thread):

Program.StopMain.Set(); 
+0

réponse GRAND !!! Merci! – Vaccano

0

pas sûr que cela vous aidera mais avec appel code natif youd

LRESULT CallNextHookEx(
    HHOOK hhk, 
    int nCode, 
    WPARAM wParam, 
    LPARAM lParam 
); 

dans votre gestionnaire pour exécuter le comportement de traitement par défaut, havent testé cela, mais je pense que si vous DonT appel le prochain gestionnaire dans la chaîne, rien ne se passera

plus d'informations: http://msdn.microsoft.com/en-us/library/ms644974%28VS.85%29.aspx . le lien contient quelques échantillons de code managé qui peuvent aider

HTH