通过窗口句柄,获取窗口左上角坐标!
朋友们帮我看下代码有什么问题。
- C# code
public partial class DemoForm : Form { [StructLayout(LayoutKind.Sequential)] struct NativeRECT { public int left; public int top; public int right; public int bottom; } [Flags] enum MouseEventFlag : uint { Move = 0x0001, LeftDown = 0x0002, LeftUp = 0x0004, RightDown = 0x0008, RightUp = 0x0010, MiddleDown = 0x0020, MiddleUp = 0x0040, XDown = 0x0080, XUp = 0x0100, Wheel = 0x0800, VirtualDesk = 0x4000, Absolute = 0x8000 } [DllImport("user32.dll")] static extern bool SetCursorPos(int X, int Y); [DllImport("user32.dll")] static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo); [DllImport("user32.dll")] static extern IntPtr FindWindow(string strClass, string strWindow); [DllImport("user32.dll")] static extern IntPtr FindWindowEx(IntPtr hwndParent, HandleRef hwndChildAfter, string strClass, string strWindow); [DllImport("user32.dll")] static extern bool GetWindowRect(IntPtr hwnd, ref NativeRECT rect);........省略部分代码 private void btnFind_Click(object sender, EventArgs e) { NativeRECT rect = new NativeRECT(); IntPtr fdwd=FindWindow(null, "程序"); txtFind.Text = fdwd.ToString(); GetWindowRect(fdwd, ref rect); txt_X1.Text = rect.left.ToString();//获取左上角X的坐标 txt_Y1.Text = rect.top.ToString();//获取左上角Y的坐标 }
上面的程序可以获取窗口句柄,但是取到的X和Y坐标都是-32000是什么原因请高手指点?
[解决办法]
那你可以用UISpy先看一下它捕获到的值是多少呢?而不是猜想这个值到底是不是对的。
通常负数是因为窗口被最大化了。你可以把它放小,再捕获一下,就会得到一个合理的坐标值。
[解决办法]
代码没问题。
[解决办法]
没看到问题
[解决办法]
GetWindowPos ,GetWindowRect 和GetWindowPlacement 都可以