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

我的GetWindowRect如何失灵了

2011-12-26 
我的GetWindowRect怎么失灵了C# codeusing Systemusing System.Collections.Genericusing System.Compon

我的GetWindowRect怎么失灵了

C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;using Microsoft.Win32;namespace 活动窗体震动{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        internal struct RECT  //Win32汇编数据结构不用自己定义        {            public int left;            public int top;            public int right;            public int bottom;        }        [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]        internal static extern IntPtr GetForegroundWindow();        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, ExactSpelling = true, SetLastError = true)]        internal static extern RECT GetWindowRect(IntPtr hwnd);        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, ExactSpelling = true, SetLastError = true)]        internal static extern void MoveWindow(IntPtr hwnd,int X,int Y,int nWidth,int nHeight,bool bRepaint);        IntPtr id;        private void timer1_Tick(object sender, EventArgs e)        {            id = GetForegroundWindow();            Random myRandom = new Random();             RECT Rect = GetWindowRect(id);            MoveWindow(id, myRandom.Next(1024), myRandom.Next(768), Rect.right-Rect.left, Rect.bottom-Rect.top, true);        }            }}

跟踪发现Rect.right-Rect.left,Rect.bottom-Rect.top算出来居然是4,4我的顶层窗体少说也有(100,60)大小了.我原来用Win32汇编成功过,不过RECT这些数据结构不用自己定义.

[解决办法]

[解决办法]
你要实现什么?
[解决办法]
1:你使用的GetWindowRect方法说实话没有见过,我觉得应该使用如下的方法:

C# code
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]internal static extern bool GetWindowRect(IntPtr hWnd, ref RECT rect);
[解决办法]
个人觉得你的程序稍带有一定的“有害”性,如果不小心,我们的机子会被你的代码搞的乱了套!

热点排行