Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SetForegroundWindow之后的SetCursorPos_C#_Winapi_Dll_Cursor Position - Fatal编程技术网

C# SetForegroundWindow之后的SetCursorPos

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

我在C#中遇到了一个关于SetCursorPos的问题,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));
但是如果我把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,我可以用鼠标移动它,但我可以用setcursorpos
setcursorpos
进行更改,返回一个非零值表示成功。您没有在调用
GetWindowRect
时检查错误。您无法检查任何p/调用中的错误,因为您没有将
SetLastError
设置为
true
。您的
Rect
结构在我看来是错误的。不要使用自动属性。使用实字段。SetCursorPos返回值始终为false!GetWindowRect总是返回良好的coordonates,但当该程序设置为forground windows时,我无法设置CursorPos,该程序是(startrade 360)