回答編集履歴

1

サンプルコード追記

2016/05/08 11:09

投稿

catsforepaw
catsforepaw

スコア5938

test CHANGED
@@ -9,3 +9,69 @@
9
9
 
10
10
 
11
11
  そのため、ウェイトを入れたい場合は、SendInputを複数回に分けて実行し、その間でSleepさせるようにします。
12
+
13
+
14
+
15
+ ---
16
+
17
+ 追記
18
+
19
+ ドラッグアンドドロップのサンプルコードです。
20
+
21
+ マウスカーソルの移動はわざわざ`SendInput`を使わずに`Cursor.Position`で行った方が簡単です。
22
+
23
+ ```C#
24
+
25
+ INPUT[] input = new INPUT[1];
26
+
27
+ input[0].type = INPUT_MOUSE;
28
+
29
+
30
+
31
+ // ドラッグ位置に移動
32
+
33
+ Cursor.Position = new Point(480, 220);
34
+
35
+
36
+
37
+ // マウス左ボタン押す
38
+
39
+ input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
40
+
41
+ SendInput(1, input, Marshal.SizeOf(input[0]));
42
+
43
+
44
+
45
+ // ちょっと間を置いて
46
+
47
+ Thread.Sleep(100);
48
+
49
+ // 少しずらして
50
+
51
+ Cursor.Position = new Point(500, 210);
52
+
53
+ // ちょっと間を置いて
54
+
55
+ Thread.Sleep(100);
56
+
57
+ // ドロップ位置に移動
58
+
59
+ Cursor.Position = new Point(800, 950);
60
+
61
+
62
+
63
+ // ウェイトを入れて
64
+
65
+ Thread.Sleep(1000);
66
+
67
+
68
+
69
+ // マウス左ボタン離す
70
+
71
+ input[0].mi.dwFlags = MOUSEEVENTF_LEFTUP;
72
+
73
+ SendInput(1, input, Marshal.SizeOf(input[0]));
74
+
75
+ ```
76
+
77
+