首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止专用键盘输入到TextBox中

如何防止专用键盘输入到TextBox中
EN

Stack Overflow用户
提问于 2022-02-24 07:03:02
回答 1查看 277关注 0票数 2

我有一个带有两个HID键盘的系统(实际上,其中一个是条形码扫描器)。我注册设备(‘条形码扫描仪’)来读取原始输入数据

我将RIDEV_NOLEGACY | RIDEV_INPUTSINK设置为dwFlags of RAWINPUTDEVICE。然后,我可以在代码中读取和处理原始输入数据。

但是,由于我设置了RIDEV_NOLEGACY dwFlags,另一个通用键盘不能将任何东西输入到XAML上的TextBox中。这不是我想要的。我只想阻止条形码扫描仪直接进入文本框,而不是所有键盘。

下面是代码示例(您需要安装nuget包'sharplibhid'):

代码语言:javascript
运行
复制
private SharpLib.Hid.Handler iHidHandler;
    
    private void Window1_Loaded(object sender, RoutedEventArgs e)
    {
        HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
        source.AddHook(WndProc);

        RAWINPUTDEVICE[] rid = new RAWINPUTDEVICE[1];
        rid[0].usUsagePage = 0x01;

        rid[0].usUsage = 0x06;

        rid[0].dwFlags = RawInputDeviceFlags.RIDEV_INPUTSINK | RawInputDeviceFlags.RIDEV_NOLEGACY;

        rid[0].hwndTarget = source.Handle;

        iHidHandler = new SharpLib.Hid.Handler(rid);

        iHidHandler.OnHidEvent += HandleHidEventThreadSafe;
    }

    public void HandleHidEventThreadSafe(object aSender, SharpLib.Hid.Event aHidEvent)
    {
        if (aHidEvent.IsStray)
        {
            //Stray event just ignore it
            return;
        }
        else
        {
            // do something...
            if (aHidEvent.Device.ProductId == xxx && aHidEvent.Device.VendorId == xxx)
            {
                Debug.WriteLine(aHidEvent.VirtualKey.ToString());
            }
        }
    }

    private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
    {
        Message message = Message.Create(hwnd, msg, wParam, lParam);

        switch (msg)
        {
            case Const.WM_INPUT:

                iHidHandler.ProcessInput(ref message);
                handled = true;
                break;
        }

        return IntPtr.Zero;
    }
EN

回答 1

Stack Overflow用户

发布于 2022-03-05 13:34:52

我建议使用简单的textBox来读取各种键盘,在条形码读取器中主动传递,解码条形码后进入,这样就可以同时读取键盘和条形码读取器的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71248240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档