Windows窗体抖动小游戏

今天在CSDN论坛上看到一个帖子,闲来无事就顺手做了一个,现在与大家分享。

由于.net的语法想实现控制其他窗体,不用WindowsAPI是无法实现的,所以需要用到如下API:

        [DllImport("user32.dll")]
        private static extern IntPtr GetForegroundWindow();
        [DllImport("user32.dll")]
        public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);

下面就是调用了,直接上代码~~

	private void Form2_Load(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            timer1.Interval = 100;
            timer1.Start();
            button1_Click(sender,e);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Tick += (sender1, e1) =>
            {
                findWindows();
            };
        }

        private void findWindows()
        {
            RECT rect = new RECT();
            Random rd = new Random();
            int intZ = rd.Next(10,20);

            intptr = GetForegroundWindow();
            GetWindowRect(intptr, out rect);
            MoveWindow(intptr, rect.Left - intZ, rect.Top - intZ, rect.Right - rect.Left, rect.Bottom - rect.Top, true);
            Thread.Sleep(intZ);
            MoveWindow(intptr, rect.Left, rect.Top - intZ, rect.Right - rect.Left, rect.Bottom - rect.Top, true);
            Thread.Sleep(intZ);
            MoveWindow(intptr, rect.Left + intZ, rect.Top + intZ, rect.Right - rect.Left, rect.Bottom - rect.Top, true);
            Thread.Sleep(intZ);
            MoveWindow(intptr, rect.Left+intZ, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top, true);
            Thread.Sleep(intZ);
            MoveWindow(intptr, rect.Left + intZ, rect.Top + intZ, rect.Right - rect.Left, rect.Bottom - rect.Top, true);
            Thread.Sleep(intZ);
            MoveWindow(intptr, rect.Left, rect.Top + intZ, rect.Right - rect.Left, rect.Bottom - rect.Top, true);
            Thread.Sleep(intZ);
            MoveWindow(intptr, rect.Left-intZ, rect.Top + intZ, rect.Right - rect.Left, rect.Bottom - rect.Top, true);
            Thread.Sleep(intZ);
            MoveWindow(intptr, rect.Left - intZ, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top, true);
            Thread.Sleep(intZ);
            MoveWindow(intptr, rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top, true);
        }

最后附上今天本游戏的源码,免费下载~还附带了一个今天上午一起做的鼠标无法点击到控件的小游戏~

http://download.csdn.net/detail/llftc/3970314

你可能感兴趣的:(C#,WinForm)