如何在.Net Compact framework 3.5中手动引发System KeyDown事件

时间:2010-04-06 07:17:03

标签: compact-framework

我在我的应用程序中使用resco控件开发了一个自定义键盘我目前使用以下代码处理退格键单击事件

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 个答案:

答案 0 :(得分: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);
}