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
Alternative Managed API:
You can get the state of the Control, Alt, and Shift keys using the static property Control.ModifierKeys.
The GetKeyState function retrieves the status of the specified virtual key. The status specifies whether the key is up, down, or toggled (on, off—alternating each time the key is pressed).
13/06/2007 02:28:35 - -70.120.221.131
TODO - a short description
10/05/2008 19:52:58 - -70.118.240.12
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.
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.
The mechanism provided by the CLR that enables managed code to call static DLL exports.
16/03/2007 13:47:32 - -84.164.4.39
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" in the upper right corner and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).
Profile your .NET code
Boost the performance of your application with ANTS Profiler
This download also contains the FREE PInvoke.net Visual Studio Add-in