VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Solution for Windows Vista

by Rodrigo da Silva Brito (1 Submission)
Category: Miscellaneous
Difficulty: Advanced
Date Added: Wed 3rd February 2021
Rating: (3 Votes)

Use of the API SendInput instead of SendKeys!
This will prevent the error of access denied in the Windows Vista.

Rate Solution for Windows Vista


Use of the API SendInput instead 
of SendKeys

This will prevent the error of access denied in the Windows Vista.


 


They forgive me but my English is 
not very good! I am Brazilian!



Copy and paste this code in a module of vb! It will go to substitute the 
SendKeys standard of the VB! 

 


Option 
Explicit



Private Const KEYEVENTF_KEYUP = &H2

Private Const INPUT_KEYBOARD = 1



Private Type KEYBDINPUT

wVk As Integer

wScan As Integer

dwFlags As Long

time As Long

dwExtraInfo As Long

End Type



Private Type GENERALINPUT

dwType As Long

xi(0 To 23) As Byte

End Type



Private Declare Function SendInput
Lib "user32.dll" (ByVal
nInputs As Long, pInputs
As GENERALINPUT, ByVal 
cbSize As Long) As Long

Private Declare Sub CopyMemory
Lib "kernel32" Alias "RtlMoveMemory" 
(pDst As Any, pSrc As Any,
ByVal ByteLen As Long)



Public Function SendKeysA(ByVal
vKey As Integer, 
Optional booDown As Boolean =
False)

Dim GInput(0) As GENERALINPUT

Dim KInput As KEYBDINPUT

KInput.wVk = vKey

If Not booDown Then

    KInput.dwFlags = KEYEVENTF_KEYUP

End If

GInput(0).dwType = INPUT_KEYBOARD

CopyMemory GInput(0).xi(0), KInput, Len(KInput)

Call SendInput(1, GInput(0), Len(GInput(0)))

End Function



Using in form! 

Example: Instead of SendKeys (“{TAB}”) you it will use SendKeys vbKeyTab, True

 


Simulation:

Before!


Private Sub Form_KeyPress(KeyAscii
As Integer)

If KeyAscii = vbKeyReturn 
Then

   SendKeys ("{TAB}")

   KeyAscii = 0

End If

End Sub




Later!

Private Sub Form_KeyPress(KeyAscii
As Integer)

If KeyAscii = vbKeyReturn 
Then

   SendKeys vbKeyTab, True

   KeyAscii = 0

End If

End Sub

 


Abraços.

Solução para o Windows Vista! Envio de teclas através da API SendInput!

Download this snippet    Add to My Saved Code

Solution for Windows Vista Comments

No comments have been posted about Solution for Windows Vista. Why not be the first to post a comment about Solution for Windows Vista.

Post your comment

Subject:
Message:
0/1000 characters