【发布时间】:2013-11-19 16:31:37
【问题描述】:
我正在将 USB 条形码扫描仪的支持集成到 WPF 应用程序中,但遇到了障碍。
目前我在this 文章的帮助下成功识别和捕获输入。
我面临的问题是,虽然我成功识别和路由来自扫描仪设备的输入,但我无法阻止输入事件以进行进一步处理(例如,如果我的应用程序上的文本框控件具有输入焦点,则输入从扫描仪将被写入它)。
我尝试了两种捕获输入的方法:
var wndSourceHandle = HwndSource.FromHwnd(new WindowInteropHelper(
_wndEventSource = value).Handle);
wndSourceHandle.AddHook(this.WndProc);
WndProc 定义:
private IntPtr WndProc(IntPtr hwnd, int iMessage, IntPtr wParam, IntPtr lParam, ref bool bisHandled)
{
if (iMessage == Win32.WM_INPUT)
{
var result = ProcessRawInput(lParam);
bisHandled = result != null && result.Value;
return IntPtr.Zero;
}
return IntPtr.Zero;
}
还有:
ComponentDispatcher.ThreadFilterMessage += (ref MSG msg, ref bool handled) =>
{
if (msg.message == Win32.WM_INPUT)
{
var result = ProcessRawInput(msg.lParam);
handled = result != null && result.Value;
return;
}
handled = false;
};
如果输入源是条码扫描器,ProcessRawInput 方法返回 true,否则返回 false。
【问题讨论】:
标签: c# wpf barcode-scanner hid