C# SetForegroundWindow之后的SetCursorPos
我在C#中遇到了一个关于SetCursorPos的问题,SetCursorPos在SetForegroundWindow之后不能工作。它返回错误2 代码的一部分:C# SetForegroundWindow之后的SetCursorPos,c#,winapi,dll,cursor-position,C#,Winapi,Dll,Cursor Position,我在C#中遇到了一个关于SetCursorPos的问题,SetCursorPos在SetForegroundWindow之后不能工作。它返回错误2 代码的一部分: Rect patrat = new Rect(); GetWindowRect(parinte, ref patrat); Console.WriteLine(SetForegroundWindow(parinte)); Thread.Sleep(1000); Console.WriteLine(SetCursorPo
Rect patrat = new Rect();
GetWindowRect(parinte, ref patrat);
Console.WriteLine(SetForegroundWindow(parinte));
Thread.Sleep(1000);
Console.WriteLine(SetCursorPos(patrat.Left + 10, patrat.Top + 20));
但是如果我把SetCursorPos放在SetForeGround之前,它会工作吗
这就是方法的重要性
[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拒绝改变光标,我该怎么办 以管理员身份运行Visual Studio应该可以解决您的问题
为设置前景窗口的线程指定的优先级略高于对前景窗口的优先级。因此,您需要以比前台窗口更高的权限运行程序。该“特定程序”是否在其他用户和/或提升权限下运行?如果是这样,您可能也必须这样做,尽管这不会影响
SetCursorPos()
。也许其他程序锁定光标和/或立即重置光标(就像许多射击运动员那样)?不,我不;t在另一个用户下运行它,并且它不会阻止curosr,我可以用鼠标移动它,但我可以用setcursorpossetcursorpos
进行更改,返回一个非零值表示成功。您没有在调用GetWindowRect
时检查错误。您无法检查任何p/调用中的错误,因为您没有将SetLastError
设置为true
。您的Rect
结构在我看来是错误的。不要使用自动属性。使用实字段。SetCursorPos返回值始终为false!GetWindowRect总是返回良好的coordonates,但当该程序设置为forground windows时,我无法设置CursorPos,该程序是(startrade 360)