首页 > 解决方案 > C# WPF WndProc 消息捕获不起作用

问题描述

我正在使用 ZkTeco 的指纹传感器。WFA 中的以下代码工作正常,并且成功捕获了指纹传感器的输入。

   protected override void DefWndProc(ref Message m)
    {
        switch (m.Msg)
        {
            case MESSAGE_CAPTURED_OK:
                {
                    MemoryStream ms = new MemoryStream();
                    BitmapFormat.GetBitmap(FPBuffer, mfpWidth, mfpHeight, ref ms);
                    Bitmap bmp = new Bitmap(ms);
                    this.picFPImg.Image = bmp;
                    if (IsRegister)
                    {  
                      // Logic here  
                    }
                 }
          }
            default:
                base.DefWndProc(ref m);
                break;
      }  

但是 WPF 下面代码中的替代方法不起作用。

    HwndSource source;
    protected override void OnSourceInitialized(EventArgs e)
    {
        var window = Application.Current.MainWindow;

        base.OnSourceInitialized(e);
        if (window != null)
        {
            HwndSource source = PresentationSource.FromVisual(window) as HwndSource;

            source?.AddHook(WndProc);
        }
    }
   private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
    {
        switch (msg)
        {
            case MESSAGE_CAPTURED_OK:
                {
                    MemoryStream ms = new MemoryStream();
                    BitmapFormat.GetBitmap(FPBuffer, mfpWidth, mfpHeight, ref ms);
                 }
         }
     }  

虽然正在调用调试函数,但 Switch 语句MESSAGE_CAPTURED_OK永远不会变为真。可能是什么原因 ?

标签: c#wpfzkteco

解决方案


推荐阅读