• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 465
  • Last Modified:

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

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
dvplayltd
Asked:
dvplayltd
  • 2
  • 2
1 Solution
 
dericstoneCommented:
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
 
dvplayltdAuthor Commented:
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
 
dericstoneCommented:
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
 
dvplayltdAuthor Commented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now