SetForegroundWindow之后的SetCursorPos

时间:2014-10-29 07:06:40

标签: c# winapi dll cursor-position

我在使用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拒绝更改光标,我该怎么办?

1 个答案:

答案 0 :(得分:-1)

以管理员身份运行Visual Studio可以解决您的问题。

SetForegroundWindow为设置前景窗口的线程分配的优先级略高于前台窗口的优先级。因此,您需要以比前台窗口更高的权限运行程序。