- 題名: SendInputがうまくいかない
- 日時: 2014/11/21 11:25:36
- ID: 32735
- この記事の返信元:
- (なし)
- この記事への返信:
- [32736] Re[1]: SendInputがうまくいかない2014/11/21 11:41:08
- ツリーを表示
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310.aspx GetLastErrorで詳細を確認しろ、とある関数については、 DllImport属性のSetLastErrorをTrueに設定しておけば、 失敗時にnew Win32Exception()とすることで エラー情報を比較的簡単に取得できます。 さて、SendInputの第2引数は「An array of INPUT structures」なので、 直接ByValなINPUT単体を渡してはいけません。 配列で渡してやるのが一番楽でしょう。 <DllImport... SendInput(..., ByVal pInputs As INPUT(), ... 渡すのが必ず一つのINPUTだけならByRefでも構いません。 <DllImport... SendInput(..., ByRef pInputs As INPUT, ...
分類:[.NET]
XPSP3/VB2005です キー打鍵で他のプログラムをクリックしようとしているのですが <DllImport("user32.dll", CharSet:=CharSet.Auto)> Private Shared Function SendInput(ByVal nInputs As Integer, ByVal pInput As INPUT, ByVal cbsize As Integer) As Integer End Function <StructLayout(LayoutKind.Sequential, Size:=28)> _ Private Structure INPUT Public _type As Integer Public _mi As MOUSEINPUT End Structure <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _ Private Structure MOUSEINPUT Public dx As Integer Public dy As Integer Public mouseData As Integer Public dwFlags As Integer Public time As Integer Public dwExtraInfo As IntPtr End Structure Dim Inp as INPUT Windows.Forms.Cursor.Position = New Point(X, Y) Inp._type = 0 Inp._mi.dx = 0 Inp._mi.dy = 0 Inp._mi.mouseData = 0 Inp._mi.dwFlags = MOUSEEVENTF_LEFTDOWN Inp._mi.time = 0 Inp._mi.dwExtraInfo = IntPtr.Zero Dim Rslt As Integer = SendInput(1, Inp, Marshal.SizeOf(Inp)) Inp._type = 0 Inp._mi.dx = 0 Inp._mi.dy = 0 Inp._mi.mouseData = 0 Inp._mi.dwFlags = MOUSEEVENTF_LEFTUP Inp._mi.time = 0 Inp._mi.dwExtraInfo = IntPtr.Zero Rslt = SendInput(1, Inp, Marshal.SizeOf(Inp)) でクリックされずRsltが0になります カーソルは移動しています 何が原因なのでしょうか よろしくお願いいたします