2010-04-06 50 views
1

我已經開發使用Resco的控制在我的應用程序目前已經用下面的代碼如何在.NET Compact Framework受人工養系統KeyDown事件3.5

private void customKeyboard1_KeyboardKeyUp(object sender, Resco.Controls.Keyboard.KeyPressedEventArgs e) 
     { 
      if (e.Key.Text == "Backspace") 
      { 
       Resco.Controls.Keyboard.CustomKeyboard.SendBackspace(); 
       e.Handled = true; 
      } 
     } 

該處理的退格鍵單擊事件的自定義鍵盤對應用程序中的編輯框可以正常工作,但不能在網頁中的編輯框中使用(例如,在gmail用戶名文本框上)。

所以有任何方法來提高KeyDown事件手動

回答

1

的P/Invoke PostKeybdMessage

編輯1

東西沿着這些路線:

[DllImport("coredll.dll", SetLastError = true)] 
internal static extern bool PostKeybdMessage(IntPtr hwnd, uint vKey, 
              uint flags, uint cCharacters, 
              uint[] pShiftStateBuffer, 
              uint[] pCharacterBuffer); 

private static void SendChar(byte key) 
{ 
    uint KeyStateDownFlag= 0x0080;  
    uint KeyShiftDeadFlag= 0x20000;  
    uint[] buf1 = new uint[] { (uint)key };  
    uint[] DownStates = new uint[] { KeyStateDownFlag };  
    uint[] DeadStates = { KeyShiftDeadFlag }; 
    PostKeybdMessage(new IntPtr(-1), 0, KeyStateDownFlag, 1, DownStates, buf1); 
    PostKeybdMessage(new IntPtr(-1), 0, KeyShiftDeadFlag, 1, DeadStates, buf1); 
} 
+0

你可以給一些示例代碼 – Sundar 2010-04-07 05:56:58

+0

+1多謝幫我解決http://stackoverflow.com/q/13014798/ 108847 – Fishcake 2012-10-23 09:15:16

相關問題