Salve a tutti.
Sto cercando di usare la funzione API sendinput per simulare la pressione di un tasto della tastiera. Il mio obiettivo è quello di creare delle macro, che ad esempio alla pressione del tasto "R", avvenga in automatico la pressione del tasto 1 (per esempio)... Ho già la parte di codice che riguarda l'hook di sistema, che intercetta il primo tasto.
La stessa funzione: muove anche il mouse e simula i click ma per la tastiera proprio non..
Vi posto il mio codice:
codice:
Private Declare Function SendInput Lib "user32" (ByVal nInputs As Integer, ByVal pInputs As INPUT, ByVal cbSize As Integer) As Integer
Private Structure KEYBDINPUT
    	'Public dwtype as Integer
    	Public wVk As Integer
    	Public wScan As Integer
    	Public dwFlags As Integer
    	Public time As Integer
    	Public dwExtraInfo As IntPtr
End Structure
'<StructLayout(LayoutKind.Explicit)> _
	Private Structure INPUT
		'<FieldOffset(0)> _
		Public type As Integer
	'	<FieldOffset(4)> _
		Public mi As MOUSEINPUT
	'	<FieldOffset(4)> _
		Public ki As KEYBDINPUT
	'	<FieldOffset(4)> _
		Public hi As HARDWAREINPUT
End Structure
Sub InvioTasto
    	Dim inputE As New INPUT
    	inpute.ki.dwExtraInfo = 0
    	inputE.type = 1 'input tastiera
    	InputE.ki.dwFlags = 0 'pressione del tasto
    	inputE.ki.wVk= 66 'tasto a caso
    	'inputE.dwExtraInfo = intptr.zero
    	Dim cbSize As Integer = Marshal.SizeOf(gettype(INPUT))
        Dim result As Integer = SendInput(1, inputE, cbSize) 'invio pressione tasto
        Dim lasterror As Integer = Marshal.GetLastWin32Error
        Debug.WriteLine("LastError: " & lasterror)
        InputE.ki.dwFlags =2 'rilascio del tasto
        cbSize  = Marshal.SizeOf(gettype(INPUT))
        result  = SendInput(1,  inputE, cbSize) 'inviio rilascio tasto
  	lasterror  = Marshal.GetLastWin32Error
        Debug.WriteLine("LastError: " & lasterror)
End Sub
Mi da ogni volta error 87. Ho letto tutti gli esempi di questo mondo ma sono quasi tutti o in c++ o per Visual Basic 6.
Io uso VB.NET, Win XP pro sp3.
VI prego datemi qualche dritta.
Grazie