C# win CE 6.0设备上的按钮

C# win CE 6.0设备上的按钮,c#,windows,compact-framework,.net-2.0,windows-ce,C#,Windows,Compact Framework,.net 2.0,Windows Ce,在运行win CE 6.0的设备上有一个按钮,您需要捕捉按下该按钮的瞬间。也就是说,直到我们按下按钮,我们的方法被执行,释放-停止方法。请帮助解决此问题。这里有一个指向codeproject的链接,其中包含执行所需操作的源代码: 我在自己的WM项目中成功地使用了这段代码来重新使用音量键和一些其他硬件按钮(我在一个屏幕上使用音量向上/向下作为触发器来翻转屏幕方向) 这里的代码太多,无法发布。该项目中的vkmap.cs似乎是所有可用密钥的综合列表: public static vkMap[]

在运行win CE 6.0的设备上有一个按钮,您需要捕捉按下该按钮的瞬间。也就是说,直到我们按下按钮,我们的方法被执行,释放-停止方法。请帮助解决此问题。

这里有一个指向codeproject的链接,其中包含执行所需操作的源代码:

我在自己的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\U KEYDOWN和WM\U SYSKEYDOWN。。对不起;如果我记得的话,我会发布一个编辑

当您完成需要输入时:

hook.Stop();

什么样的“按钮”?硬件还是软件?那么它在很大程度上取决于硬件。这到底是什么硬件?中文读RFID设备。我有一个在这种模式下工作的应用程序-我按下按钮-方法被执行,再次摇晃-方法停止执行。询问OEM如何从设备上获得按钮按下。很可能只有他们知道。这可能有效,也可能无效,取决于OEM如何映射按钮。如果它被映射为键盘按钮,那么这将起作用。如果它不是一个键盘按钮(我已经看到很多CE设备的按钮不是),那么它就不会工作。同意,但还是有一个很棒的代码示例引用了+1,这是我以前没有见过的