我试图在给定的时间间隔内制作一个基本上在其他windows / apps上执行鼠标宏的程序。
我已经管理过创建计时器,映射并保存我需要的3个位置(使用[DllImport("User32.Dll")]
和GetCursorPos
/ SetCursorPos
/ mouse_event
进行左键单击)甚至设法使用LinearSmoothMove
在屏幕上移动鼠标。
问题是当我执行该功能时,鼠标移动直到它到达另一个应用程序窗口的一侧,然后它停止" (实际上它看起来像是在窗户下移动)。但是,它可以与其他东西一起使用,例如打开记事本和在行之间进行操作。
答案 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);