2011-09-13 86 views
1

我正在開發一個帶有條形碼閱讀器的.NET CF3.5 WM6.1設備的應用程序,並且想要捕獲所有按鈕(F1,1,掃描儀按鈕)單擊某個設備。特別是我有興趣如何抓住條形碼按鈕按下。我寫了一個小應用程序,但我可以捕捉的唯一行動是形式接近。 任何人都可以幫我用這段代碼嗎?我錯過了什麼?WndProc,如何捕捉所有按鈕?

public partial class Form1 : Form 
{ 
    MsgHandler m_MsgHandler; 
    public Form1() 
    { 
     InitializeComponent(); 
     m_MsgHandler = new MsgHandler(this); 
    } 
    public class MsgHandler : MessageWindow 
    { 
     public const int WM_CLOSE = 71; 
     public const int WM_USER = 0x0400; 
     public const int WM_SCANTRIGGER = WM_USER + 702; 
     private Form1 m_myForm; 

     public MsgHandler(Form1 form) 
     { 
      m_myForm = form; 
     } 
     protected override void WndProc(ref Message msg) 
     { 
      switch (msg.Msg) 
      { 
       case WM_SCANTRIGGER: 
        this.m_myForm.DoAction1(); 
        break; 
       case WM_CLOSE: 
        break; 
       default: 
        this.m_myForm.DoAction2(msg.WParam.ToInt32()); 
        break; 
      } 
     } 
    } 
    public void DoAction1() 
    { 
     MessageBox.Show("Scann btn pressed!"); 
    } 
    public void DoAction2(int button) 
    { 
     MessageBox.Show(button.ToString()); 
    } 
} 

謝謝 盧卡斯

+0

你從哪裏得到這個'WM_USER + 702'? – PaulH

+0

在設備條形碼示例中,該示例不適用於 – Lukas

+1

如果示例不起作用,請撥打該移動設備的支持號碼。 – PaulH

回答

1

條形碼閱讀器通常表現得像普通鍵盤所以沒有按下特殊按鈕。您只需獲得按下按鍵的信息,並輸入完整代碼後即可。

+0

好的,但問題是我沒有收到任何消息。我認爲如果按下任何按鈕,我應該執行DoAction2()方法執行。任何想法是爲什麼? – Lukas