【问题标题】:Button on the win CE 6.0 devicewin CE 6.0 设备上的按钮
【发布时间】:2013-01-06 19:43:38
【问题描述】:

在您运行 win CE 6.0 的设备上是一个按钮,您需要捕捉按下它的那一刻。也就是说,直到我们按下按钮,我们的方法才会执行,释放-停止方法。请帮忙解决问题。

【问题讨论】:

  • 什么样的“按钮”?硬件还是软件?
  • 那么它很大程度上依赖于硬件。这到底是什么硬件?
  • 中文RFID读取设备。我有一个在这种模式下工作的应用程序 - 我按下按钮 - 方法被执行,再次摇晃 - 方法停止执行。
  • 询问 OEM 如何从设备获取按钮按下。可能只有他们自己知道。

标签: c# windows compact-framework .net-2.0 windows-ce


【解决方案1】:

这里是 codeproject 的链接,其中包含可以执行您想要的操作的源代码:

http://www.codeproject.com/Articles/49881/Hooking-the-keyboard-message-queue-in-compact-fram

我已在我自己的 WM 项目中成功使用此代码重新调整音量键和其他一些硬件按钮的用途(我在一个屏幕上使用音量增大/减小作为翻转屏幕方向的触发器)。

这里的代码太多了。项目中的 vkmap.cs 似乎是所有可用键的综合列表:

   public static vkMap[] vkValues = {
            new vkMap ( 0x00, "VK_NOTDEF"), 
            new vkMap ( 0x01, "VK_LBUTTON" ),
            new vkMap ( 0x02,"VK_RBUTTON" ),
            new vkMap ( 0x03,"VK_CANCEL" ),
...
            new vkMap ( 0x30,"VK_0" ),
            new vkMap ( 0x31,"VK_1" ),
...
            new vkMap ( 0x41,"VK_A" ),
...
            new vkMap ( 0xA6,"VK_BROWSER_BACK" ),
            new vkMap ( 0xA7,"VK_BROWSER_FORWARD" ),
            new vkMap ( 0xA8,"VK_BROWSER_REFRESH" ),

等等..总共有 258 个键,但有些键被标记为未定义。

使用代码:

HookKeys hook = new HookKeys();
hook.HookEvent += new HookKeys.HookEventHandler(HookEvent);
hook.Start();

然后在你的 eventHandler 代码中如你所愿 - 我使用 Switch 语句来查找我想要的键:

     switch (vkMap.vkValues[keyBoardInfo.vkCode].s)
        {
            case "VK_F6":
                if ((hookArgs.wParam.ToInt32() == WM_KEYDOWN) || (hookArgs.wParam.ToInt32() == WM_SYSKEYDOWN))
                // Code here
                break;
            case "VK_F7":
                if ((hookArgs.wParam.ToInt32() == WM_KEYDOWN) || (hookArgs.wParam.ToInt32() == WM_SYSKEYDOWN))
                 // Code here
                break;
            default:
                break;
        }

我不记得为什么我还要检查 WM_KEYDOWN 和 WM_SYSKEYDOWN.. 对此感到抱歉;如果我记得我会发布一个编辑。

当您完成需要输入时:

hook.Stop();

【讨论】:

  • 这可能有效也可能无效,具体取决于 OEM 映射按钮的方式。如果它被映射为键盘按钮,那么这将起作用。如果它不是键盘按钮(而且我看到很多 CE 设备的按钮都不是),那么这将不起作用。
  • 同意,但仍然引用了一个很棒的代码示例,我以前从未见过为此 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多