Click here to Skip to main content
15,895,709 members
Home / Discussions / C#
   

C#

 
GeneralRe: .Net COM interop challenge Pin
Adeel Chaudhry3-May-08 0:22
Adeel Chaudhry3-May-08 0:22 
AnswerRe: .Net COM interop challenge Pin
Jason McBurney5-May-08 8:57
Jason McBurney5-May-08 8:57 
Questionpinvoke to send text in a console app Pin
jpeternel2-May-08 7:30
jpeternel2-May-08 7:30 
AnswerRe: pinvoke to send text in a console app Pin
jpeternel2-May-08 7:30
jpeternel2-May-08 7:30 
AnswerRe: pinvoke to send text in a console app Pin
jpeternel2-May-08 7:47
jpeternel2-May-08 7:47 
AnswerRe: pinvoke to send text in a console app Pin
Adeel Chaudhry2-May-08 11:16
Adeel Chaudhry2-May-08 11:16 
AnswerRe: pinvoke to send text in a console app Pin
Christian Graus2-May-08 12:54
protectorChristian Graus2-May-08 12:54 
GeneralRe: pinvoke to send text in a console app Pin
jpeternel16-May-08 11:54
jpeternel16-May-08 11:54 
I dug in to some very old c code of mine for the solution. I didn't expect it to work but I'm not complaining. Here is the SIMPLE solution for anyone that is interested:

Add to your project:
using System.Runtime.InteropServices;

[DllImport("coredll.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,
int dwExtraInfo);

Then add this function, please note many of the original C constants are not valid in C# but you can look them up and define them for WM 5.0 if you need them. My app only needed to worry about alphanumeric data, no special characters.

static void SendKeyStroke(int mevent)
{
//*******************************************************
//send character to screen by simulating a key press
//*******************************************************

int evt = 0;
byte keyCode = 0x00;

//SPECIAL KEYS *************
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
const int VK_RETURN = 0x0D;
const int VK_SHIFT = 0x10;
const int VK_SPACE = 0x20;
//**************************

evt = mevent;

/*
//these codes are not defined
switch(mevent)
{
case 258: evt = VK_DOWN; break; //down arrow
case 259: evt = VK_LEFT; break; //left arrow
case 300: evt = VK_RETURN; break; //return key
case 301: evt = VK_UP; break; //up arrow
case 302: evt = VK_BACK; break; //back space key

case 10: evt = NULL; break; //do nothing
case 59: evt = VK_SEMICOLON; break; // ;
case 61: evt = VK_EQUAL; break; // =
case 44: evt = VK_COMMA; break; // ,
case 45: evt = VK_HYPHEN; break; // -
case 46: evt = VK_PERIOD; break; // .
case 47: evt = VK_SLASH; break; // /
case 91: evt = VK_LBRACKET; break; // [
case 92: evt = VK_BACKSLASH; break; // "\" char
case 93: evt = VK_RBRACKET; break; // ]
case 39: evt = VK_APOSTROPHE; break; // '

//shifted keys(same order as above)
case 58: evt = VK_SEMICOLON; keybd_event(VK_SHIFT, 0, 0, 0); break; //colon :
case 43: evt = VK_EQUAL; keybd_event(VK_SHIFT, 0, 0, 0); break;//plus +
case 60: evt = VK_COMMA; keybd_event(VK_SHIFT, 0, 0, 0); break;//***less than*** <<br mode="hold" /> case 95: evt = VK_HYPHEN; keybd_event(VK_SHIFT, 0, 0, 0); break;//underscore _
case 62: evt = VK_PERIOD; keybd_event(VK_SHIFT, 0, 0, 0); break;//greater than >
case 63: evt = VK_SLASH; keybd_event(VK_SHIFT, 0, 0, 0); break;//question ?
case 123: evt = VK_LBRACKET; keybd_event(VK_SHIFT, 0, 0, 0); break;//curly {
case 124: evt = VK_BACKSLASH; keybd_event(VK_SHIFT, 0, 0, 0); break;//or |
case 125: evt = VK_RBRACKET; keybd_event(VK_SHIFT, 0, 0, 0); break;//curly }
case 34: evt = VK_APOSTROPHE; keybd_event(VK_SHIFT, 0, 0, 0); break; //quote "

//shifted keys off the numbers
case 33: evt = 49; keybd_event(VK_SHIFT, 0, 0, 0); break;// 1 ! = 33
case 64: evt = 50; keybd_event(VK_SHIFT, 0, 0, 0); break;// 2 @ = 64
case 35: evt = 51; keybd_event(VK_SHIFT, 0, 0, 0); break;// 3 # = 35
case 36: evt = 52; keybd_event(VK_SHIFT, 0, 0, 0); break;// 4 $ = 36
case 37: evt = 53; keybd_event(VK_SHIFT, 0, 0, 0); break;// 5 % = 37
case 94: evt = 54; keybd_event(VK_SHIFT, 0, 0, 0); break;// 6 ^ = 94
case 38: evt = 55; keybd_event(VK_SHIFT, 0, 0, 0); break;// 7 & = 38
case 42: evt = 56; keybd_event(VK_SHIFT, 0, 0, 0); break;// 8 * = 42
case 40: evt = 57; keybd_event(VK_SHIFT, 0, 0, 0); break;// 9 ( = 40
case 41: evt = 48; keybd_event(VK_SHIFT, 0, 0, 0); break;// 0 ) = 41
default: break;
}
*/


////handle lowercase letters
if ((mevent > 96) && (mevent < 123))
{
//make sure the SHIFT key is not pressed or you will not be able to display numbers
keybd_event(VK_SHIFT, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
evt = mevent - 32;
}
else if ((mevent > 47) && (mevent < 58))
{
//numbers
//make sure the SHIFT key is not pressed or you will not be able to display numbers
keybd_event(VK_SHIFT, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
evt = mevent;
}
else if ((mevent > 64) && (mevent < 91))
{
////handle uppercase letters
keyCode = Convert.ToByte(evt);
keybd_event(VK_SHIFT, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
evt = mevent;
}

keyCode = Convert.ToByte(evt);

//press
keybd_event(keyCode, 0x45, KEYEVENTF_EXTENDEDKEY, 0);

//release
keybd_event(keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);

//make sure the SHIFT key is not pressed or you will not be able to display numbers
keybd_event(VK_SHIFT, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
QuestionPassing struct data from 1 form to another form Pin
Jerry Graham2-May-08 6:45
Jerry Graham2-May-08 6:45 
AnswerRe: Passing struct data from 1 form to another form Pin
Colin Angus Mackay2-May-08 7:07
Colin Angus Mackay2-May-08 7:07 
AnswerRe: Passing struct data from 1 form to another form Pin
#realJSOP2-May-08 7:26
mve#realJSOP2-May-08 7:26 
QuestionCreating Reuseable Classes Pin
Jammer2-May-08 6:04
Jammer2-May-08 6:04 
AnswerRe: Creating Reuseable Classes Pin
carbon_golem2-May-08 6:37
carbon_golem2-May-08 6:37 
GeneralRe: Creating Reuseable Classes Pin
Jammer2-May-08 7:26
Jammer2-May-08 7:26 
AnswerRe: Creating Reuseable Classes Pin
Jason McBurney2-May-08 8:51
Jason McBurney2-May-08 8:51 
QuestionC# Classes in DLL files Pin
Cozmo232-May-08 5:49
Cozmo232-May-08 5:49 
AnswerRe: C# Classes in DLL files Pin
Judah Gabriel Himango2-May-08 6:30
sponsorJudah Gabriel Himango2-May-08 6:30 
AnswerRe: C# Classes in DLL files Pin
Abhijit Jana2-May-08 6:30
professionalAbhijit Jana2-May-08 6:30 
AnswerRe: C# Classes in DLL files Pin
#realJSOP2-May-08 6:30
mve#realJSOP2-May-08 6:30 
AnswerRe: C# Classes in DLL files Pin
Cozmo232-May-08 7:49
Cozmo232-May-08 7:49 
GeneralRe: C# Classes in DLL files Pin
Jason McBurney2-May-08 9:22
Jason McBurney2-May-08 9:22 
GeneralRe: C# Classes in DLL files Pin
Cozmo235-May-08 3:12
Cozmo235-May-08 3:12 
QuestionDateTime, DayOfWeek in range comparison Pin
buchstaben2-May-08 4:11
buchstaben2-May-08 4:11 
AnswerRe: DateTime, DayOfWeek in range comparison Pin
Urs Enzler2-May-08 4:22
Urs Enzler2-May-08 4:22 
GeneralRe: DateTime, DayOfWeek in range comparison Pin
buchstaben2-May-08 4:28
buchstaben2-May-08 4:28 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.