1: //#if WFA
2: using System;
3: using System.Drawing;
4: using System.Threading;
5: using System.Windows.Forms;
6:
7: namespace Ia.Cl.Model
8: {
9: /// <summary publish="true">
10: /// Windows mouse movements and properties control support class.
11: /// </summary>
12: /// <remarks>
13: /// Copyright � 2001-2015 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
14: ///
15: /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
16: /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
17: ///
18: /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
19: /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20: ///
21: /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
22: ///
23: /// Copyright notice: This notice may not be removed or altered from any source distribution.
24: /// </remarks>
25: public class Mouse
26: {
27: ////////////////////////////////////////////////////////////////////////////
28:
29: /// <summary>
30: ///
31: /// </summary>
32: public Mouse() { }
33:
34: ////////////////////////////////////////////////////////////////////////////
35:
36: /// <summary>
37: ///
38: /// </summary>
39: public static Point Position()
40: {
41: return Cursor.Position;
42: }
43:
44: ////////////////////////////////////////////////////////////////////////////
45:
46: /// <summary>
47: ///
48: /// </summary>
49: public static void Position(out int x, out int y)
50: {
51: x = Cursor.Position.X;
52: y = Cursor.Position.Y;
53: }
54:
55: ////////////////////////////////////////////////////////////////////////////
56:
57: /// <summary>
58: ///
59: /// </summary>
60: public static void Position(int x, int y)
61: {
62: Cursor.Position = new Point(x, y);
63: }
64:
65: ////////////////////////////////////////////////////////////////////////////
66:
67: /// <summary>
68: ///
69: /// </summary>
70: public static void Move(Point p)
71: {
72: Move(p.X, p.Y);
73: }
74:
75: ////////////////////////////////////////////////////////////////////////////
76:
77: /// <summary>
78: ///
79: /// </summary>
80: public static void Move(int x, int y)
81: {
82: int x_orig, y_orig;
83: int x_path, y_path;
84: int step;
85:
86: x_orig = Cursor.Position.X;
87: y_orig = Cursor.Position.Y;
88:
89: step = (int)Math.Sqrt(Math.Pow(x - x_orig, 2) + Math.Pow(y - y_orig, 2));
90:
91: step /= 10;
92:
93: for (int i = 1; i <= step; i++)
94: {
95: x_path = x_orig + i * (x - x_orig) / step;
96: y_path = y_orig + i * (y - y_orig) / step;
97:
98: Cursor.Position = new Point(x_path, y_path);
99: Thread.Sleep(30);
100: }
101:
102: Cursor.Position = new Point(x, y);
103: }
104:
105: ////////////////////////////////////////////////////////////////////////////
106:
107: /// <summary>
108: ///
109: /// </summary>
110: public static void Wait(int millisecond)
111: {
112: Thread.Sleep(millisecond);
113: }
114:
115: ////////////////////////////////////////////////////////////////////////////
116:
117: /// <summary>
118: ///
119: /// </summary>
120: public static void ClickLeftSingle()
121: {
122: Ia.Cl.Model.Winapi.SendLeftClick();
123: }
124:
125: ////////////////////////////////////////////////////////////////////////////
126:
127: /// <summary>
128: ///
129: /// </summary>
130: public static void ClickLeftDouble()
131: {
132: Ia.Cl.Model.Winapi.SendLeftClick();
133: Thread.Sleep(100);
134: Ia.Cl.Model.Winapi.SendLeftClick();
135: }
136:
137: ////////////////////////////////////////////////////////////////////////////
138:
139: /// <summary>
140: ///
141: /// </summary>
142: public static void ClickLeftDragMouse(int x, int y)
143: {
144: Ia.Cl.Model.Winapi.SendLeftDownClick();
145: Move(x, y);
146: Ia.Cl.Model.Winapi.SendLeftUpClick();
147: }
148:
149: ////////////////////////////////////////////////////////////////////////////
150:
151: /// <summary>
152: ///
153: /// </summary>
154: public static void ClickRightSingle()
155: {
156: Ia.Cl.Model.Winapi.SendRightClick();
157: }
158:
159: ////////////////////////////////////////////////////////////////////////////
160:
161: /// <summary>
162: ///
163: /// </summary>
164: public static void ClickRightDouble()
165: {
166: Ia.Cl.Model.Winapi.SendRightClick();
167: Thread.Sleep(100);
168: Ia.Cl.Model.Winapi.SendRightClick();
169: }
170:
171: ////////////////////////////////////////////////////////////////////////////
172:
173: /// <summary>
174: ///
175: /// </summary>
176: public static void Key(string n)
177: {
178: // print string
179: // SendKeys.Send(n);
180: SendKeys.SendWait(n);
181: }
182:
183: ////////////////////////////////////////////////////////////////////////////
184: ////////////////////////////////////////////////////////////////////////////
185: }
186: }
187: //#endif