c# - win CE 6.0 设备上的按钮

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

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

最佳答案

这里是 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();

关于c# - win CE 6.0 设备上的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185994/

相关文章:

c# - 如何从 InternetExplorer 对象查看源 HTML?

c# - 为什么这个多线程多连接的TCP服务器只接受一个连接?

c# - 发送两个数据包(一个有长度,一个有数据)或发送一个连接的数据包?

python - 无法通过 pip 安装 tensorflow(不再)

c# - WinCE 上的 SHBrowseForFolder 布局不正确

c# - .NET 精简框架 (C#) : Add checkbox to Listbox

c# - 如何在 Nancy on Mono 中获取真正的错误消息?

windows - Magit 无法识别 git 存储库

windows - 如何区分计算机中的两个鼠标?

c# - 适用于 .Net Compact Framework 的 Twitter API 库