Hi Leute,
ich bin grad dabei ein Aufzeichnungsprogramm für Maus und Tastatur zu machen. Diese Aufzeichnungen sollen natürlich wieder abgespielt werden, dafür benutze ich SendInput.
Der Code dafür sieht so aus, hab ich bei pinvoke gefunden.
Spoiler anzeigen
Das Problem:
GetLastError gibt den Fehlercode 87 zurück: ERROR_INVALID_PARAMETER
Ich habe leider keine Ahnung welcher Parameter es ist. Es wird wahrscheinlich an der INPUT-Structure liegen, wo soll man sonst Fehler machen?
Das Sternchen zum Code auf pinvoke.net habe ich gelesen, das ist bestimmt der Fehler. Mit den Typen hab ich auch schon ein bisschen rumgespielt, so von unsigned zu signed usw.
Leider kommt aber permanent Fehler Code 87...
Kann mir einer von euch helfen? Danke
mfG nibel
ich bin grad dabei ein Aufzeichnungsprogramm für Maus und Tastatur zu machen. Diese Aufzeichnungen sollen natürlich wieder abgespielt werden, dafür benutze ich SendInput.
Der Code dafür sieht so aus, hab ich bei pinvoke gefunden.
VB.NET-Quellcode
- Private Sub DoKeyBoard(ByVal flags As KEYEVENTF, ByVal key As Keys)
- Dim input As New INPUT
- Dim ki As New KEYBDINPUT
- input.dwType = InputType.Keyboard
- input.ki = ki
- input.ki.wVk = Convert.ToInt16(key)
- input.ki.wScan = 0
- input.ki.time = 0
- input.ki.dwFlags = flags
- input.ki.dwExtraInfo = IntPtr.Zero
- Dim cbSize As Integer = Marshal.SizeOf(GetType(INPUT))
- Dim result As Integer = SendInput(1, input, cbSize)
- If result = 0 Then Debug.WriteLine(Marshal.GetLastWin32Error)
- End Sub
- <StructLayout(LayoutKind.Explicit, pack:=1, Size:=28)> _
- Friend Structure INPUT
- <FieldOffset(0)> Public dwType As InputType
- <FieldOffset(4)> Public mi As MOUSEINPUT
- <FieldOffset(4)> Public ki As KEYBDINPUT
- <FieldOffset(4)> Public hi As HARDWAREINPUT
- End Structure
- <StructLayout(LayoutKind.Sequential, pack:=1)> _
- Friend Structure KEYBDINPUT
- Public wVk As Int16
- Public wScan As Int16
- Public dwFlags As KEYEVENTF
- Public time As Int32
- Public dwExtraInfo As IntPtr
- End Structure
- <DllImport("user32.dll", SetLastError:=True)> _
- Friend Shared Function SendInput(ByVal cInputs As UInt32, ByRef pInputs As INPUT, ByVal cbSize As Int32) As Int32
- End Function
Das Problem:
GetLastError gibt den Fehlercode 87 zurück: ERROR_INVALID_PARAMETER
Ich habe leider keine Ahnung welcher Parameter es ist. Es wird wahrscheinlich an der INPUT-Structure liegen, wo soll man sonst Fehler machen?
Das Sternchen zum Code auf pinvoke.net habe ich gelesen, das ist bestimmt der Fehler. Mit den Typen hab ich auch schon ein bisschen rumgespielt, so von unsigned zu signed usw.
Leider kommt aber permanent Fehler Code 87...
Kann mir einer von euch helfen? Danke
mfG nibel