Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than user32, prefix the name with the module name and a period.
GetKeyState (user32)
.
C# Signature:
[DllImport("USER32.dll")]
[DllImport("user32.dll")]
static extern short GetKeyState(VirtualKeyStates nVirtKey);
VB.NET Signature
<DllImport("user32.dll", SetLastError := True, CharSet := CharSet.Unicode)> _
Private Function GetKeyState (ByVal nVirtKey As KeyStates) As Short
End Function
An open source managed .NET wrapper written in C# is available on Codeplex at http://inputsimulator.codeplex.com/. It has all of these definitions complete with documented code comments and can be used to determine key states as well. Thanks to all the contributors at pinvoke.
Notes:
The following two constants are used in combination with the returned value to test the current state:
The Enum Keys in System.Windows.Forms has the key code used for this function, so you don't need to define const. If casting in this manner, beware that the Keys.Shift member does not behave in the way that you would expect; you should use one of Keys.Menu, Keys.LMenu, Keys.RMenu instead. Return value will be 0 if off and 1 if on as a toggle and -127 if key held down.
Do not use (ByVal nVirtKey As Long) but (ByVal nVirtKey As Short), in VS2005, in fact, in the first case you will have a PInvoke error.
Sample Code:
This Sample use this API to create a new textbox to support overwrite mode, testing the state of insert key.
Imports System.Windows.Forms
Public Class MinhaNovaTextbox
Inherits System.Windows.Forms.TextBox
Dim bInserting As Boolean = True
Private Declare Function GetKeyState _
Lib "user32" (ByVal nVirtKey As Short) As Integer
Public Sub New()
MyBase.New()
bInserting = GetKeyState(Keys.Insert)
End Sub
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
bInserting = GetKeyState(Keys.Insert)
If Not bInserting Then
Me.SelectionLength = 1
End If
MyBase.OnKeyPress(e)
End Sub
End Class
This sample c# code returns if the mouse button is currently pressed.
You can get the state of the Control, Alt, and Shift keys using the static property Control.ModifierKeys.
TODO - a short description
5/29/2011 8:39:56 AM - -87.206.232.220
ByVal is a VB keyword that specifies a variable to be passed as a parameter BY VALUE. In other words, if the function or sub changes the value of the internal variable, it does not change the value of the external variable that was passed to it.
4/25/2007 3:19:55 AM - josep1er@cmich.edu-141.209.229.179
ByVal is a VB keyword that specifies a variable to be passed as a parameter BY VALUE. In other words, if the function or sub changes the value of the internal variable, it does not change the value of the external variable that was passed to it.
4/25/2007 3:19:55 AM - josep1er@cmich.edu-141.209.229.179
The mechanism provided by the CLR that enables managed code to call static DLL exports.k
10/27/2022 9:24:28 PM - 114.37.143.20
Please edit this page!
Do you have...
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).