在C#上的其他应用程序中移动鼠标

时间:2015-05-30 04:41:37

标签: c#

我试图在给定的时间间隔内制作一个基本上在其他windows / apps上执行鼠标宏的程序。

我已经管理过创建计时器,映射并保存我需要的3个位置(使用[DllImport("User32.Dll")]GetCursorPos / SetCursorPos / mouse_event进行左键单击)甚至设法使用LinearSmoothMove在屏幕上移动鼠标。

问题是当我执行该功能时,鼠标移动直到它到达另一个应用程序窗口的一侧,然后它停止" (实际上它看起来像是在窗户下移动)。但是,它可以与其他东西一起使用,例如打开记事本和在行之间进行操作。

1 个答案:

答案 0 :(得分:1)

请参阅类似问题here的答案。但在使用ClickOnPointTool.ClickOnPoint()之前,您应该编写下一个代码:

要找到这样的特定流程:

private IntPtr GetProcessMainWindowHandle(string mainWindowTitle)
{
    var processes = Process.GetProcesses();
    var foundProcess = processes.Single(p => mainWindowTitle.Equals(p.MainWindowTitle, StringComparison.CurrentCulture));
    // Also you can use method Process.GetProcessesByName(), it depends on your business logic
    return foundProcess.MainWindowHandle;
}

使用方法SetForegroundWindow()的P / Invoke调用激活找到的窗口,其值为变量mainWindowHandle,从GetProcessMainWindowHandle()收到:

[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);