首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

通过窗口句柄,获取窗口左上角坐标!解决方案

2012-05-20 
通过窗口句柄,获取窗口左上角坐标!朋友们帮我看下代码有什么问题。C# codepublic partial class DemoForm :

通过窗口句柄,获取窗口左上角坐标!
朋友们帮我看下代码有什么问题。

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 都可以

热点排行