我在使用SetCursorPos的C#中遇到问题,SetCursorPos在SetForegroundWindow之后无法正常工作。它返回错误2。
代码的一部分:
Rect patrat = new Rect();
GetWindowRect(parinte, ref patrat);
Console.WriteLine(SetForegroundWindow(parinte));
Thread.Sleep(1000);
Console.WriteLine(SetCursorPos(patrat.Left + 10, patrat.Top + 20));
但是如果我在SetForegroundWindow之前放置SetCursorPos它可以工作
这是方法的导入
[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32")]
public static extern int SetCursorPos(int x, int y);
public struct Rect
{
public int Left { get; set; }
public int Top { get; set; }
public int Right { get; set; }
public int Bottom { get; set; }
}
编辑:我发现前景中的某个程序SetCursorPos拒绝更改光标,我该怎么办?
答案 0 :(得分:-1)
以管理员身份运行Visual Studio可以解决您的问题。
SetForegroundWindow为设置前景窗口的线程分配的优先级略高于前台窗口的优先级。因此,您需要以比前台窗口更高的权限运行程序。