Windows窗体抖动小游戏

8 篇文章 0 订阅

今天在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

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值