找到另一个进程并单击用户界面 C#
Find another process and click on user interface C#
我需要在 Windows 中找到另一个应用程序进程(另一个程序是 运行)。当该进程运行时,我需要单击另一个程序中的按钮。我必须在 C# 上创建该机制。可以使用控制台应用程序。
哪个图书馆可以做到?寻找一个例子?
所以调用进程的Process.GetProcesses(). The Process
object has a property for the MainWindowHandle可以得到进程列表。有了它,您应该能够将鼠标点击发送到该过程。您可以使用 SendMessage
方法发送鼠标按下和鼠标弹起调用。第二个参数 (lParam) 是您发送要单击的坐标的位置。因此,如果您想单击坐标 25、100,那么您可以将坐标与这样的位移结合起来:
int y = 100;
int x = 25;
var coords = (y << 16) | x;
然后这样调用它(其中 hWnd 是进程的 window 句柄):
SendMessage(hwnd, WM_LBUTTONDOWN, 0, coords);
SendMessage(hwnd, WM_LBUTTONDOWN, 0, coords);
[DllImport("User32.dll")]
public static extern Int32 SendMessage(
int hWnd, // handle to destination window
int Msg, // message
int wParam, // first message parameter
int lParam); // second message parameter
public const int WM_LBUTTONDOWN = 0x201;
public const int WM_LBUTTONUP = 0x202;
我需要在 Windows 中找到另一个应用程序进程(另一个程序是 运行)。当该进程运行时,我需要单击另一个程序中的按钮。我必须在 C# 上创建该机制。可以使用控制台应用程序。
哪个图书馆可以做到?寻找一个例子?
所以调用进程的Process.GetProcesses(). The Process
object has a property for the MainWindowHandle可以得到进程列表。有了它,您应该能够将鼠标点击发送到该过程。您可以使用 SendMessage
方法发送鼠标按下和鼠标弹起调用。第二个参数 (lParam) 是您发送要单击的坐标的位置。因此,如果您想单击坐标 25、100,那么您可以将坐标与这样的位移结合起来:
int y = 100;
int x = 25;
var coords = (y << 16) | x;
然后这样调用它(其中 hWnd 是进程的 window 句柄):
SendMessage(hwnd, WM_LBUTTONDOWN, 0, coords);
SendMessage(hwnd, WM_LBUTTONDOWN, 0, coords);
[DllImport("User32.dll")]
public static extern Int32 SendMessage(
int hWnd, // handle to destination window
int Msg, // message
int wParam, // first message parameter
int lParam); // second message parameter
public const int WM_LBUTTONDOWN = 0x201;
public const int WM_LBUTTONUP = 0x202;