Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

How to get keyboard press SHIFT outside keyboard event holder function?

Posted on 2009-05-17
4
Medium Priority
?
456 Views
Last Modified: 2013-12-17
Hi experts!

  Im using C# 2008 , WinForm NET 2. I want in one procedure to get state of keyboard (to check for example will user  is press SHIFT button, or other button)

 I need this to make better speed of development, I create database application and want when I press SHIFT to skip check for user/ name / password . (Of course I have addition technique which can do this only  in my DEV computer, not in production).

 So in general I need to check for press SHIFT state, but on function which are not some of keyboard event holder. How to do this ?
0
Comment
Question by:dvplayltd
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 8

Expert Comment

by:dericstone
ID: 24405373
Add KeyDown and KeyUp events to your top-level Form as in the attached snippet. Then store the state of the shift key. Make sure you have enabled the KeyPreview property of the Form.

namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
 
      this.KeyPreview = true;
    }
 
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
      checkBox1.Checked = e.Shift;
    }
 
    private void Form1_KeyUp(object sender, KeyEventArgs e)
    {
      checkBox1.Checked = e.Shift;
    }
  }
}

Open in new window

0
 

Author Comment

by:dvplayltd
ID: 24405459
To dericstone

You send me rigth code, but it is not for my case.
I do not get at all
private void Form1_KeyDown(object sender, KeyEventArgs e)
or any event connected with key because I already press it BEFORE start my form

I need to produce such behavour - press SHIFT, then start my program and go without check.

I need someway to scan current state of keyboard, but outside of event which hande keyboard event. That is question.

0
 
LVL 8

Accepted Solution

by:
dericstone earned 2000 total points
ID: 24405579
In that case, you might try using PInvoke on GetAsyncKeyState as in the attached snippet.
using System.Runtime.InteropServices;
 
namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    const int VK_SHIFT = 0x0010;
 
    [DllImport("User32.dll")]
    public static extern short GetAsyncKeyState(int vKey);
 
    public Form1()
    {
      InitializeComponent();
 
      short key = GetAsyncKeyState(VK_SHIFT);
      checkBox1.Checked = (key & 0x8000) != 0;
    }
  }
}

Open in new window

0
 

Author Closing Comment

by:dvplayltd
ID: 31582323
Yeee. This work, thank you ! P.S: I COM world I use API and think that in NET have some diffrent object ... but look that is same.
0

Featured Post

Enroll in October's Free Course of the Month

Do you work with and analyze data? Enroll in October's Course of the Month for 7+ hours of SQL training, allowing you to quickly and efficiently store or retrieve data. It's free for Premium Members, Team Accounts, and Qualified Experts!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question