2009-08-07 4 views
2

Ich habe ein Windows Mobile-App, die wie folgt aussehen:Halten Sie eine Windows Mobile Console App Lauf

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; 
    } 
} 

Es wird einen Haken in die Tastatur erstellen (Ich weiß, dass runzelte die Stirn wird von einigen auf). Mein Problem ist, dass ich die Main-Methode brauche, um nie zurückzukehren. Dies wird auf Geräten ausgeführt, die meinem Unternehmen gehören, und wir verwenden dies, um die Telefonhardwareschlüssel zu deaktivieren.

Dies scheint wie es sollte einfach sein, aber ich bin darauf fest.

Auf normalen .NET würde ich nur Console.Readline() anrufen, aber das funktioniert nicht auf Windows Mobile Compact Framework. Ich habe auch versucht Thread.Sleep(0), aber es funktioniert auch nicht.

Danke für jede Rückmeldung.

Antwort

4

Thread.Sleep(0) schläft für null Millisekunden.

Wahrscheinlich möchten Sie Thread.Sleep(Timeout.Infinite).

Sie könnten auch erwägen eine EventWaitHandle erstellen:

class Program 
{ 
    static public ManualResetEvent StopMain; 

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

Dann, wenn Sie immer bereit waren Main zu beenden() Sie nennen könnte (von einem anderen Thread):

Program.StopMain.Set(); 
+0

große Antwort helfen kann !!! Vielen Dank! – Vaccano

0

nicht sicher, ob diese nativen aber mit Code youd Anruf helfen

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

in Ihrem Handler die Standardbehandlung Verhalten auszuführen, hat dies getestet, aber ich denke, wenn man Anruf am nächsten Handler nicht in die Kette, nichts wird passieren

Weitere Informationen: http://msdn.microsoft.com/en-us/library/ms644974%28VS.85%29.aspx . der Link enthält einige verwalteten Code-Beispiele, die

hth

Verwandte Themen