Is there a .Net equivalent of the GetKeyboardStat e api?
I need to know whether the user is pressing the Ctrl or Shift keys when they
click on my usercontrol.
Thanks
Steve 6 17856
Over ride the key down event like this.
protected override void OnKeyDown(KeyEv entArgs e)
{
base.OnKeyDown( e);
}
From the key event argument, you can check the key code.
Steve Barnett wrote: Is there a .Net equivalent of the GetKeyboardStat e api?
I need to know whether the user is pressing the Ctrl or Shift keys when they click on my usercontrol.
Thanks Steve
Hi,
You could explore two ways, one is intercepting the KeyDown event and
checkng the KeyEventArg properties for the status of the keys.
Another solution can be in the Click handler to check for the status by
P/invoking GetKeyboardStat e:
[DllImport("user 32.dll")]
public static extern int GetKeyboardStat e(byte [] lpKeyState);
byte[] bCharData = new byte[256];
GetKeyboardStat e(bCharData);
You have to know the index of the keys you want, take a look in the .H
files
--
Ignacio Machin,
ignacio.machin AT dot.state.fl.us
Florida Department Of Transportation
"Steve Barnett" <no****@nodomai n.com> wrote in message
news:%2******** ********@TK2MSF TNGP12.phx.gbl. .. Is there a .Net equivalent of the GetKeyboardStat e api?
I need to know whether the user is pressing the Ctrl or Shift keys when they click on my usercontrol.
Thanks Steve
I need to know the keyboard state when the mouse is clicked.
Steve
"Jianwei Sun" <js***********@ gmail.com> wrote in message
news:OR******** *****@TK2MSFTNG P11.phx.gbl... Over ride the key down event like this.
protected override void OnKeyDown(KeyEv entArgs e) { base.OnKeyDown( e); }
From the key event argument, you can check the key code.
Steve Barnett wrote: Is there a .Net equivalent of the GetKeyboardStat e api?
I need to know whether the user is pressing the Ctrl or Shift keys when they click on my usercontrol.
Thanks Steve
Thanks for the suggestion. I'm kind of new to .Net development so am
struggling to know what's available via the supplied classes and what I need
to code API calls for. I checked out GetKeyboardStat e and decided to go with
GetKeyState in the end, as it's more specific.
For what it's worth, I created a Keyboard class to encapsulate the
functionality I needed. The key definitions were found on the pinvoke web
site. This gives me a simple test:
If (Keyboard.IsKey Pressed(Keyboar d.VK_CONTROL))
using System;
using System.Runtime. InteropServices ;
namespace Keyboard
{
class Keyboard
{
[DllImport("user 32.dll")]
static extern short GetKeyState(Vir tualKeyStates nVirtKey);
public static bool IsKeyPressed(Vi rtualKeyStates testKey)
{
bool keyPressed = false;
short result= GetKeyState(tes tKey);
switch (result)
{
case 0:
// Not pressed and not toggled on.
keyPressed = false;
break;
case 1:
// Not pressed, but toggled on
keyPressed = false;
break;
default:
// Pressed (and may be toggled on)
keyPressed = true;
break;
}
return keyPressed;
}
public enum VirtualKeyState s : int
{
VK_LBUTTON = 0x01,
VK_RBUTTON = 0x02,
VK_CANCEL = 0x03,
VK_MBUTTON = 0x04,
//
VK_XBUTTON1 = 0x05,
VK_XBUTTON2 = 0x06,
//
VK_BACK = 0x08,
VK_TAB = 0x09,
//
VK_CLEAR = 0x0C,
VK_RETURN = 0x0D,
//
VK_SHIFT = 0x10,
VK_CONTROL = 0x11,
VK_MENU = 0x12,
VK_PAUSE = 0x13,
VK_CAPITAL = 0x14,
//
VK_KANA = 0x15,
VK_HANGEUL = 0x15, /* old name - should be here for
compatibility */
VK_HANGUL = 0x15,
VK_JUNJA = 0x17,
VK_FINAL = 0x18,
VK_HANJA = 0x19,
VK_KANJI = 0x19,
//
VK_ESCAPE = 0x1B,
//
VK_CONVERT = 0x1C,
VK_NONCONVERT = 0x1D,
VK_ACCEPT = 0x1E,
VK_MODECHANGE = 0x1F,
//
VK_SPACE = 0x20,
VK_PRIOR = 0x21,
VK_NEXT = 0x22,
VK_END = 0x23,
VK_HOME = 0x24,
VK_LEFT = 0x25,
VK_UP = 0x26,
VK_RIGHT = 0x27,
VK_DOWN = 0x28,
VK_SELECT = 0x29,
VK_PRINT = 0x2A,
VK_EXECUTE = 0x2B,
VK_SNAPSHOT = 0x2C,
VK_INSERT = 0x2D,
VK_DELETE = 0x2E,
VK_HELP = 0x2F,
//
VK_LWIN = 0x5B,
VK_RWIN = 0x5C,
VK_APPS = 0x5D,
//
VK_SLEEP = 0x5F,
//
VK_NUMPAD0 = 0x60,
VK_NUMPAD1 = 0x61,
VK_NUMPAD2 = 0x62,
VK_NUMPAD3 = 0x63,
VK_NUMPAD4 = 0x64,
VK_NUMPAD5 = 0x65,
VK_NUMPAD6 = 0x66,
VK_NUMPAD7 = 0x67,
VK_NUMPAD8 = 0x68,
VK_NUMPAD9 = 0x69,
VK_MULTIPLY = 0x6A,
VK_ADD = 0x6B,
VK_SEPARATOR = 0x6C,
VK_SUBTRACT = 0x6D,
VK_DECIMAL = 0x6E,
VK_DIVIDE = 0x6F,
VK_F1 = 0x70,
VK_F2 = 0x71,
VK_F3 = 0x72,
VK_F4 = 0x73,
VK_F5 = 0x74,
VK_F6 = 0x75,
VK_F7 = 0x76,
VK_F8 = 0x77,
VK_F9 = 0x78,
VK_F10 = 0x79,
VK_F11 = 0x7A,
VK_F12 = 0x7B,
VK_F13 = 0x7C,
VK_F14 = 0x7D,
VK_F15 = 0x7E,
VK_F16 = 0x7F,
VK_F17 = 0x80,
VK_F18 = 0x81,
VK_F19 = 0x82,
VK_F20 = 0x83,
VK_F21 = 0x84,
VK_F22 = 0x85,
VK_F23 = 0x86,
VK_F24 = 0x87,
//
VK_NUMLOCK = 0x90,
VK_SCROLL = 0x91,
//
VK_OEM_NEC_EQUA L = 0x92, // '=' key on numpad
//
VK_OEM_FJ_JISHO = 0x92, // 'Dictionary' key
VK_OEM_FJ_MASSH OU = 0x93, // 'Unregister word' key
VK_OEM_FJ_TOURO KU = 0x94, // 'Register word' key
VK_OEM_FJ_LOYA = 0x95, // 'Left OYAYUBI' key
VK_OEM_FJ_ROYA = 0x96, // 'Right OYAYUBI' key
//
VK_LSHIFT = 0xA0,
VK_RSHIFT = 0xA1,
VK_LCONTROL = 0xA2,
VK_RCONTROL = 0xA3,
VK_LMENU = 0xA4,
VK_RMENU = 0xA5,
//
VK_BROWSER_BACK = 0xA6,
VK_BROWSER_FORW ARD = 0xA7,
VK_BROWSER_REFR ESH = 0xA8,
VK_BROWSER_STOP = 0xA9,
VK_BROWSER_SEAR CH = 0xAA,
VK_BROWSER_FAVO RITES = 0xAB,
VK_BROWSER_HOME = 0xAC,
//
VK_VOLUME_MUTE = 0xAD,
VK_VOLUME_DOWN = 0xAE,
VK_VOLUME_UP = 0xAF,
VK_MEDIA_NEXT_T RACK = 0xB0,
VK_MEDIA_PREV_T RACK = 0xB1,
VK_MEDIA_STOP = 0xB2,
VK_MEDIA_PLAY_P AUSE = 0xB3,
VK_LAUNCH_MAIL = 0xB4,
VK_LAUNCH_MEDIA _SELECT = 0xB5,
VK_LAUNCH_APP1 = 0xB6,
VK_LAUNCH_APP2 = 0xB7,
//
VK_OEM_1 = 0xBA, // ';:' for US
VK_OEM_PLUS = 0xBB, // '+' any country
VK_OEM_COMMA = 0xBC, // ',' any country
VK_OEM_MINUS = 0xBD, // '-' any country
VK_OEM_PERIOD = 0xBE, // '.' any country
VK_OEM_2 = 0xBF, // '/?' for US
VK_OEM_3 = 0xC0, // '`~' for US
//
VK_OEM_4 = 0xDB, // '[{' for US
VK_OEM_5 = 0xDC, // '\|' for US
VK_OEM_6 = 0xDD, // ']}' for US
VK_OEM_7 = 0xDE, // ''"' for US
VK_OEM_8 = 0xDF,
//
VK_OEM_AX = 0xE1, // 'AX' key on Japanese AX kbd
VK_OEM_102 = 0xE2, // "<>" or "\|" on RT 102-key kbd.
VK_ICO_HELP = 0xE3, // Help key on ICO
VK_ICO_00 = 0xE4, // 00 key on ICO
//
VK_PROCESSKEY = 0xE5,
//
VK_ICO_CLEAR = 0xE6,
//
VK_PACKET = 0xE7,
//
VK_OEM_RESET = 0xE9,
VK_OEM_JUMP = 0xEA,
VK_OEM_PA1 = 0xEB,
VK_OEM_PA2 = 0xEC,
VK_OEM_PA3 = 0xED,
VK_OEM_WSCTRL = 0xEE,
VK_OEM_CUSEL = 0xEF,
VK_OEM_ATTN = 0xF0,
VK_OEM_FINISH = 0xF1,
VK_OEM_COPY = 0xF2,
VK_OEM_AUTO = 0xF3,
VK_OEM_ENLW = 0xF4,
VK_OEM_BACKTAB = 0xF5,
//
VK_ATTN = 0xF6,
VK_CRSEL = 0xF7,
VK_EXSEL = 0xF8,
VK_EREOF = 0xF9,
VK_PLAY = 0xFA,
VK_ZOOM = 0xFB,
VK_NONAME = 0xFC,
VK_PA1 = 0xFD,
VK_OEM_CLEAR = 0xFE
}
}
}
Steve
"Ignacio Machin ( .NET/ C# MVP )" <ignacio.mach in AT dot.state.fl.us > wrote
in message news:uN******** ******@TK2MSFTN GP10.phx.gbl... Hi,
You could explore two ways, one is intercepting the KeyDown event and checkng the KeyEventArg properties for the status of the keys.
Another solution can be in the Click handler to check for the status by P/invoking GetKeyboardStat e:
[DllImport("user 32.dll")] public static extern int GetKeyboardStat e(byte [] lpKeyState); byte[] bCharData = new byte[256]; GetKeyboardStat e(bCharData);
You have to know the index of the keys you want, take a look in the .H files
-- Ignacio Machin, ignacio.machin AT dot.state.fl.us Florida Department Of Transportation "Steve Barnett" <no****@nodomai n.com> wrote in message news:%2******** ********@TK2MSF TNGP12.phx.gbl. .. Is there a .Net equivalent of the GetKeyboardStat e api?
I need to know whether the user is pressing the Ctrl or Shift keys when they click on my usercontrol.
Thanks Steve
Maybe you can use : Control.Modifie rKeys ...
I knew there had to be a .Net supplied function for this.
Many thanks
Steve
"Steph." <st***@nomail.c om> wrote in message news:O$******** ******@TK2MSFTN GP04.phx.gbl...
Maybe you can use : Control.Modifie rKeys ... This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: hokiegal99 |
last post by:
I am a relative c newbie, so bare with me.
I need to write a program that writes all keyboard keystrokes into a
text file (up to 500KB at which point it would begin overwriting itself)
regardless of what application the user is inputing data into (email,
office documents, etc). The purpose of this program is to have a real
time backup of user input so that user input can be restored when a PC
crashes or unexpectedly looses power. The...
|
by: Don Riesbeck Jr. |
last post by:
I'm working on an application (OEM) using C# that utilizes input from a
keyboard, and USB Barcode Scanner. The scanner is a HID Keyboard device,
and input from it is sent to the system as if it were a keyboard. I need to
be able to identify input from the scanner and keyboard independently. I've
looked at DirectX.DirectInput, and using user32.dll to hook into the
keyboard messages, but neither method seems to allow for identification of...
|
by: nx-2000 |
last post by:
I've got a very large C# forms app and now that its being used in
bigger environments we're getting a steady stream of "why does it do
this?" problems. The most nagging of which right now is that when a
MessageBox.Show() is displayed, if the user hits enter or esc, those
keys get passed back to the form. From searching online, this is
apparently by design(for whom, I don't know, why its not optional, I
_really_ don't know). This...
|
by: tiger786 |
last post by:
I am new to programming and studying basics in college .Can somebody
write a program on this?
The program should monitor a possibly infinite stream of characters
from the keyboard (standard input). If it detects the sequence "ccc"
it outputs a "0". If it detects the sequence "cdc" it outputs a "1".
DO NOT detect sequences within sequences. The program should exit
cleanly when it detects an End Of Input.
For example:
|
by: Srin |
last post by:
Hi,
I'm in the process of writing a small C# App, in which i have two
groupboxes in a form. The form has the KeyPreview property set to true.
The groupbox1 contains a set of labels. The second groupbox contains a
few checkboxes and a button. I wrote a form1_keypress handler to handle
keyboard inputs directed at the form. But once the groupbox2 receives
focus (if i change one of the checkboxes or click on the button), even
before i can...
| |
by: pinkfloydhomer |
last post by:
I am writing a curses application, but the getch() does not seem to
give me all I want. Of course, if I press "d", it returns an ord("d")
and so on. But I want to be able to detect whether alt, shift or ctrl
has been pressed also. Shift is normally covered by returning an
uppercase character instead and ctrl seems to return control codes (as
is normal, I guess), but alt I can't detect with getch, it seems.
Preferably, I would like one...
|
by: Kbalz |
last post by:
I have an application that minimizes itself, and I want it to listen
for certain key commands, and when they are pressed, my program can
react to them.
So far I've gotten my application to react as I intend while the
program has focus, but when the application loses focus, the listening
stops.
I am using VS 2008 beta 2, with .net 3.5.
|
by: BD |
last post by:
How can I duplicate the behavior of the operating system shortcut keys
in my application? For example, my windows form has 5 controls
(textboxes), the operating system will pickup which control has the
focus and handle ctrl-c, ctrl-v, or any other shortcuts. I have the
same shortcuts working in my app, but have not determined how to find
out which control has focus. Would I set up a loop or code for each
control at form level. Any help...
|
by: Studlyami |
last post by:
I have a simple application which includes a default window (named Window1) with no additional xaml.
Window1 consists of a timerclass object which contains a timer running at 60hrz.
public Window1()
{//in Window1.xaml.cs
MainTimerClass = new TimerClass(); //my timer class object
}
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look !
Part I. Meaning of...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
| |
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |