From: dbgrick on
Try calling using these parameters

keybd_event(KeyCode, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(KeyCode, 0, KEYEVENTF_KEYUP, 0);

Regards,
Rick D.
Contractor


"ink" wrote:

>
> Hi all,
>
> I am working with C# CF2 on windows mobile 5 phone edition on a Symbol MC70
> device.
>
> For some reason the KeyDown Event doesn't fire when you use the keybd_event
> to send the VK_Return= 0x0D.
>
> If I use the hard keyboard Return I get.
> KeyDown
> KeyPress
> KeyUp
> KeyUp
>
>
> If I use the soft keyboard Return or keybd_event and VK_Return I get.
> KeyPress
> KeyUp
>
>
> If I use any of the three above methods (Soft keyboard, Hard keyboard or
> keybd_event) to input Numbers, letters or even Delete then I get.
> KeyDown
> KeyPress
> KeyUp
>
> Which is what I would have expected from all of these scenarios.
>
> I have tried setting the Textbox allow returns property and it had no
> effect.
> I have also tried setting the form key preview property to see if that would
> make any difference.
>
>
> This is the only post I have been able to find that even resembles my
> problem, it is for the desktyop and it is the richtextcontrol, but I don't
> really understand what the resolution to the problem was.
> http://www.thescripts.com/forum/thread249414.html
>
>
> I really need to be able to send the VK_Return using keybd_event and have it
> fire the Key Down event.
>
> Any idea on how this can be done?
>
> I have already tried moving my code that is running in the KeyDown to the
> KeyUp but this has not been an acceptable solution to the problem as it
> introduces to many bugs.
>
> I have attached the code I have used for testing to the bottom of this post
> I create all the controls dynamically so all that you need to do to test is
> start a new single form project and past all this code over the top of your
> form class code. The way to test is uncomment lines from the
> textBox1_GotFocus event.
>
>
> Thanks in advanced.
>
> ink
>
>
> //######## START Of Code #####################
>
> using System;
> using System.Collections.Generic;
> using System.ComponentModel;
> using System.Data;
> using System.Drawing;
> using System.Text;
> using System.Windows.Forms;
> using System.Runtime.InteropServices;
>
> namespace WMTestingApp
> {
> public partial class Form1 : Form
> {
>
> private System.Windows.Forms.TextBox textBox1;
> private System.Windows.Forms.ListBox listBox1;
> private System.Windows.Forms.Button button1;
>
>
>
> [DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError =
> true)]
> internal static extern void keybd_event(byte bVk, byte bScan, int
> dwFlags, int dwExtraInfo);
>
>
> public Form1()
> {
> InitializeComponent();
>
> this.textBox1 = new System.Windows.Forms.TextBox();
> this.listBox1 = new System.Windows.Forms.ListBox();
> this.button1 = new System.Windows.Forms.Button();
> //
> // textBox1
> //
> this.textBox1.AcceptsReturn = true;
> this.textBox1.Location = new System.Drawing.Point(20, 32);
> this.textBox1.Name = "textBox1";
> this.textBox1.Size = new System.Drawing.Size(192, 21);
> this.textBox1.TabIndex = 0;
> this.textBox1.Text = "textBox1";
> this.textBox1.GotFocus += new
> System.EventHandler(this.textBox1_GotFocus);
> this.textBox1.KeyUp += new
> System.Windows.Forms.KeyEventHandler(this.textBox1_KeyUp);
> this.textBox1.KeyPress += new
> System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);
> this.textBox1.KeyDown += new
> System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);
> //
> // listBox1
> //
> this.listBox1.Location = new System.Drawing.Point(20, 73);
> this.listBox1.Name = "listBox1";
> this.listBox1.Size = new System.Drawing.Size(192, 72);
> this.listBox1.TabIndex = 1;
> //
> // button1
> //
> this.button1.Location = new System.Drawing.Point(141, 151);
> this.button1.Name = "button1";
> this.button1.Size = new System.Drawing.Size(71, 23);
> this.button1.TabIndex = 2;
> this.button1.Text = "clear";
> this.button1.Click += new
> System.EventHandler(this.button1_Click);
>
> //
> // Form1
> //
> this.Controls.Add(this.button1);
> this.Controls.Add(this.listBox1);
> this.Controls.Add(this.textBox1);
> }
>
> private void textBox1_KeyDown(object sender, KeyEventArgs e)
> {
> listBox1.Items.Add("textBox1_KeyDown");
>
> }
>
> private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
> {
> listBox1.Items.Add("textBox1_KeyPress");
> }
>
> private void textBox1_KeyUp(object sender, KeyEventArgs e)
> {
> listBox1.Items.Add("textBox1_KeyUp");
> }
>
> private void button1_Click(object sender, EventArgs e)
> {
> listBox1.Items.Clear();
> }
>
>
> private void textBox1_GotFocus(object sender, EventArgs e)
> {
>
> //PressKey(VirtualKeyCodes.VK_HOME);
> //PressKey(VirtualKeyCodes.VK_DELETE);
> //PressKey(VirtualKeyCodes.VK_END);
>
> //PressKey(VirtualKeyCodes.VK_SPACE);
> //PressKey(VirtualKeyCodes.VK_NUMPAD1);
>
> //PressKey(VirtualKeyCodes.VK_SPACE);
> //PressKey(VirtualKeyCodes.VK_NUMPAD2);
>
> //PressKey(VirtualKeyCodes.VK_SPACE);
> //PressKey(VirtualKeyCodes.VK_NUMPAD3);
>
> //PressKey(VirtualKeyCodes.VK_RETURN);
>
> }
>
>
>
> public void PressKey(VirtualKeyCodes keyCode)
> {
> const int KEYEVENTF_EXTENDEDKEY = 0x1;
> const int KEYEVENTF_KEYUP = 0x2;
> const int KEYEVENTF_KEYDOWN = 0x0;
>
> byte KeyCode = (byte)keyCode;
>
> keybd_event(KeyCode, 0x45, KEYEVENTF_KEYDOWN |
> KEYEVENTF_EXTENDEDKEY, 0);
> keybd_event(KeyCode, 0x45, KEYEVENTF_EXTENDEDKEY |
> KEYEVENTF_KEYUP, 0);
>
> }
>
>
>
>
> public enum VirtualKeyCodes
> {
> VK_LBUTTON = 0x01, //Left mouse button
> VK_RBUTTON = 0x02, // Right mouse button
> VK_CANCEL = 0x03, // Control-break processing
> VK_MBUTTON = 0x04, // Middle mouse button on a three-button
> mouse
> VK_BACK = 0x08, // BACKSPACE key
> VK_TAB = 0x09, // TAB key
> VK_CLEAR = 0x0C, // CLEAR key
> VK_RETURN = 0x0D, // ENTER key
> VK_SHIFT = 0x10, // SHIFT key
> VK_CONTROL = 0x11, //CTRL key
> VK_MENU = 0x12, // ALT key
> VK_PAUSE = 0x13, // PAUSE key
> VK_CAPITAL = 0x14, // CAPS LOCK key
> VK_ESCAPE = 0x1B, //ESC key
> VK_SPACE = 0x20, //SPACEBAR
> VK_PRIOR = 0x21, //PAGE UP key
> VK_NEXT = 0x22, //PAGE DOWN key
> VK_END = 0x23, //END key
> VK_HOME = 0x24, //HOME key
> VK_LEFT = 0x25, // LEFT ARROW key
> VK_UP = 0x26, //UP ARROW key
> VK_RIGHT = 0x27, //RIGHT ARROW key
> VK_DOWN = 0x28, //DOWN ARROW key
> VK_SELECT = 0x29, // SELECT key
> VK_EXECUTE = 0x2B, //EXECUTE key
> VK_SNAPSHOT = 0x2C, //PRINT SCREEN key
> VK_INSERT = 0x2D, // INS key
> VK_DELETE = 0x2E, //DEL key
> VK_HELP = 0x2F, // HELP key
> VK_LWIN = 0x5B, //Left Windows key on a Microsoft Natural
> Keyboard
> VK_RWIN = 0x5C, // Right Windows key on a Microsoft Natural
> Keyboard
> VK_APPS = 0x5D, // Applications key on a Microsoft Natural
> Keyboard
> VK_NUMPAD0 = 0x60, // Numeric keypad 0 key
> VK_NUMPAD1 = 0x61, // Numeric keypad 1 key
> VK_NUMPAD2 = 0x62, // Numeric keypad 2 key
> VK_NUMPAD3 = 0x63, // Numeric keypad 3 key
> VK_NUMPAD4 = 0x64, // Numeric keypad 4 key
> VK_NUMPAD5 = 0x65, // Numeric keypad 5 key
> VK_NUMPAD6 = 0x66, // Numeric keypad 6 key
> VK_NUMPAD7 = 0x67, // Numeric keypad 7 key
> VK_NUMPAD8 = 0x68, // Numeric keypad 8 key
> VK_NUMPAD9 = 0x69, // Numeric keypad 9 key
> VK_MULTIPLY = 0x6A, // Multiply key
> VK_ADD = 0x6B, // Add key
> VK_SEPARATOR = 0x6C, // Separator key
> VK_SUBTRACT = 0x6D, // Subtract key
> VK_DECIMAL = 0x6E, // Decimal key
> VK_DIVIDE = 0x6F, //Divide key
> VK_F1 = 0x70, // F1 key
> VK_F2 = 0x71, // F2 key
> VK_F3 = 0x72, // F3 key
> VK_F4 = 0x73, // F4 key
> VK_F5 = 0x74, // F5 key
> VK_F6 = 0x75, // F6 key
> VK_F7 = 0x76, // F7 key
> VK_F8 = 0x77, // F8 key
> VK_F9 = 0x78, // F9 key
> VK_F10 = 0x79, // F10 key
> VK_F11 = 0x7A, // F11 key
> VK_F12 = 0x7B, // F12 key
> VK_F13 = 0x7C, // F13 key
> VK_F14 = 0x7D, // F14 key
> VK_F15 = 0x7E, // F15 key
> VK_F16 = 0x7F, // F16 key
> VK_F17 = 0x80, // F17 key
> VK_F18 = 0x81, // F18 key
> VK_F19 = 0x82, // F19 key
> VK_F20 = 0x83, // F20 key
> VK_F21 = 0x84, // F21 key
> VK_F22 = 0x85, // F22 key
> VK_F23 = 0x86, // F23 key
> VK_F24 = 0x87, // F24 key
> VK_NUMLOCK = 0x90, // NUM LOCK key
> VK_SCROLL = 0x91, // SCROLL LOCK key
> VK_LSHIFT = 0xA0, // Left SHIFT
> VK_RSHIFT = 0xA1, // Right SHIFT
> VK_LCONTROL = 0xA2, // Left CTRL
> VK_RCONTROL = 0xA3, // Right CTRL
> VK_LMENU = 0xA4, // Left ALT
> VK_RMENU = 0xA5, //Right ALT
> VK_ATTN = 0xF6, // ATTN key
> VK_CRSEL = 0xF7, // CRSEL key
> VK_EXSEL = 0xF8, // EXSEL key
> VK_EREOF = 0xF9, // Erase EOF key
> VK_PLAY = 0xFA, // PLAY key
> VK_ZOOM = 0xFB, // ZOOM key
> VK_NONAME = 0xFC, // Reserved for future use
> VK_PA1 = 0xFD, // PA1 key
> VK_OEM_CLEAR = 0xFE, //CLEAR key
> VK_KEYLOCK = 0xF22 //Key used to lock device
>
> }
>