【问题标题】:Keep a Windows Mobile Console App Running保持 Windows Mobile 控制台应用程序运行
【发布时间】:2010-11-17 18:11:38
【问题描述】:

我有一个如下所示的 Windows 移动应用:

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

它会在键盘上创建一个钩子(我知道有些人不赞成)。我的问题是我需要 Main 方法永远不会返回。这将在我公司拥有的设备上运行,我们正在使用它来禁用手机硬件键。

这似乎应该很简单,但我坚持下去。

在普通的 .NET 上,我只会调用 Console.Readline(),但这在 Windows Mobile Compact Framework 上不起作用。我也试过Thread.Sleep(0),但也没用。

感谢您的任何反馈。

【问题讨论】:

    标签: c# windows-mobile compact-framework console


    【解决方案1】:

    Thread.Sleep(0) 休眠 0 毫秒。

    你可能想要Thread.Sleep(Timeout.Infinite)

    您也可以考虑创建一个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
        }
    }
    

    然后,如果你准备好退出 Main(),你可以调用(从另一个线程):

    Program.StopMain.Set();
    

    【讨论】:

      【解决方案2】:

      如果它要在贵公司拥有的设备上运行,那么为什么不在后台运行一个小型 Windows 程序。我的意思是隐藏窗口。让它坐在你的任务栏中。 Click on this link for more information on use of notification icon in CF.

      【讨论】:

        【解决方案3】:

        不确定这是否会有所帮助,但您可以调用本机代码

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

        在您的处理程序中执行默认处理行为,尚未对此进行测试,但我认为如果您调用链中的下一个处理程序,什么都不会发生

        更多信息: http://msdn.microsoft.com/en-us/library/ms644974%28VS.85%29.aspx . 该链接包含一些可能有帮助的托管代码示例

        【讨论】:

          猜你喜欢
          • 2010-10-16
          • 2011-02-04
          • 2018-02-09
          • 2010-11-19
          • 2012-02-03
          • 2017-10-05
          • 2015-03-04
          • 2011-01-22
          • 1970-01-01
          相关资源
          最近更新 更多