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:Mi da ogni volta error 87.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 SubHo 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

Ho letto tutti gli esempi di questo mondo ma sono quasi tutti o in c++ o per Visual Basic 6.
Rispondi quotando
