桌面浮动窗口(类似恶意广告)的实现详解

突然想起来flash有碰撞反弹飘动as控制的效果,所以想起来用c#也来做一个桌面飘动碰撞反弹无标题栏窗体。有点像中了恶意病毒广告效果。
主要代码如下(使用了一timer控件和一Button(为了我自己控制),窗体的BorderStyle设置为None):


代码如下:

int ScreenWidth = SystemInformation.PrimaryMonitorMaximizedWindowSize.Width;
        int ScreenHeight = SystemInformation.PrimaryMonitorMaximizedWindowSize.Height;
        private int speedX = 4;
        private int speedY = 3;
        private bool canMove = true;
        int myswitch = 1;//为了我可以控制停止所以添加的飘与停的切换开关
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (canMove)
            {
                this.DesktopLocation = new Point(this.DesktopLocation.X + speedX, this.DesktopLocation.Y + speedY);
                if (this.DesktopLocation.X + this.Width >= ScreenWidth || this.DesktopLocation.X < 0)
                {
                    speedX = -speedX;
                }
                if (this.DesktopLocation.Y + this.Height >= ScreenHeight || this.DesktopLocation.Y < 0)
                {
                    speedY = -speedY;
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            myswitch *= -1;
            if (myswitch == -1)
            {
                canMove = false;
                //button1.Text = "飘动";
            }
            else
            {
                canMove = true;
                //button1.Text = "停止";
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
        private void Form1_DoubleClick(object sender, EventArgs e)
        {
            Application.Exit();
        }

暂写这么多,有时间把它再增强下更像恶意广告。~

(0)

相关推荐

  • 桌面浮动窗口(类似恶意广告)的实现详解

    突然想起来flash有碰撞反弹飘动as控制的效果,所以想起来用c#也来做一个桌面飘动碰撞反弹无标题栏窗体.有点像中了恶意病毒广告效果.主要代码如下(使用了一timer控件和一Button(为了我自己控制),窗体的BorderStyle设置为None): 复制代码 代码如下: int ScreenWidth = SystemInformation.PrimaryMonitorMaximizedWindowSize.Width;        int ScreenHeight = SystemInf

  • 对PyQt5基本窗口控件 QMainWindow的使用详解

    QMainWindow基本介绍 QMainWindow主窗口为用户提供了一个应用程序框架,它有自己的布局,可以在布局中添加控件. 窗口类型介绍 PyQt5中,主要使用以下三个类来创建窗口,可以直接使用,也可以继承后再使用 QMainWindow QWidget QDialog QMainWindow QMainWindow可以包含菜单栏,工具栏,状态栏,标题栏等,是GUI程序的主窗口. 如果我们需要创建主窗口程序,就使用该类. QDialog QDialog是对话框窗口的基类,对话框一般用来执行

  • 微信小程序激励式视频广告组件使用详解

    微信小程序搜索:短视频去水印解析 目前微信小程序针对个人来说广告是最好的变现方式,广告主要分为: 1. Banner 2. 激励式视频 3. 插屏 Banner广告很简单,插入代码就可以显示 这里介绍下激励式视频广告实现(观看完整广告奖励积分): //视频广告 let videoAd = null; //视频广告拉取状态 let videoAdPushStatus = false; Page({ data: { //积分总数 creditsAmountSum: 100 }, onLoad(opt

  • C# winform中窗口关闭按钮的隐藏与禁用详解

    首先说一句: 不存任何一种方式可以单独隐藏关闭按钮,隐藏的话会把所有最大化,最小化,帮助,关闭按钮都给隐藏掉. 第一种:禁用窗口上部的关闭按钮 方法一:在Form1的窗口程序中desigener设计器中重写如下方法:(将此部分粘贴到窗口程序中去就可以了) protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; if (m.Msg

  • Python深度学习实战PyQt5窗口切换的堆叠布局示例详解

    目录 1. 堆叠布局简介 1. 1什么是堆叠布局(Stacked Layout) 1.2 堆叠布局的实现方法 2. 创建多窗口切换的堆叠布局 3. 堆叠布局的主程序设计 3.1 QStackedWidget 类 3.2 建立信号/槽连接 3.3 页面控制程序 3.4 堆叠布局中的控件操作 软件项目中经常需要多种不同的图形界面,以适应不同的任务场景.选项卡控件(QTackedWidget)通过标签选择打开对应的对话框页面,不需要另外编程.堆叠窗口控件(QStackedWidget)在主程序中通过编

  • 在C#程序中注入恶意DLL的方法详解

    目录 一.背景 二.实现原理 1. 基本思路 2. 案例演示 3. 自定义注入 三:总结 一.背景 前段时间在训练营上课的时候就有朋友提到一个问题,为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现的?其实简而言之就是线程的远程注入,这一篇就展开说一下. 二.实现原理 1. 基本思路 WinDbg 在附加进程的时候,会注入一个线程到 C# 进程 中,注入成功后,会执行一个 DbgBreakPoint() 函数,其实就是 int 3 ,这时候 CPU 就会执行 3

  • swing分割窗口控件JSplitPane使用方法详解

    本文为大家分享了JSplitPane的使用方法,供大家参考,具体内容如下 1.swing分割窗口控件JSplitPane,用来将窗口分割成两个部分. 2.分割后的窗口每个窗口只能放一个控件,想要方多个控件的话,可以在上面方一个JPane面板,这样就可以方多个控件.swing分割窗口控件JSplitPane,用来将窗口分割成两个部分.JSplitPane提供两个常数让你设置到底是要垂直分割还是水平分割.这两个常数分别是:HORIZONTAL_SPIT,VERTICAL_SPLIT 3.使用方法:

  • 通过python实现弹窗广告拦截过程详解

    原理 这里实现的弹窗拦截,是程序不断的监视电脑屏幕,当出现需要拦截的窗口时,自动控制屏幕点击事件关闭.第一步:将需要关闭弹窗的点击位置截图. 直接上代码 while True: #获取图片的相对屏幕的中心点坐标     # location = pyautogui.locateCenterOnScreen('close.PNG') #获取图片在屏幕的位置及大小     location=pyautogui.locateOnScreen('close1.PNG')     if location

  • Kotlin如何使用类似C#的yield功能详解

    前言 用过c#的可能对 yield 关键字爱不释手,那么在像我这种被迫上java贼船的人,就想找到类似的功能. 关于c#中的yield关键字大家可以参考这篇文章:https://www.jb51.net/article/63859.htm 我使用的是kotlin,下面的方法演示了产生一个序列的功能. val fibonacciSeq = buildSequence { var a = 0 var b = 1 yield(1) while (true) { yield(a + b) val tmp

  • mysql类似oracle rownum写法实例详解

    rownum是oracle才有的写法,rownum在oracle中可以用于取第一条数据,或者批量写数据时限定批量写的数量等 mysql取第一条数据写法 SELECT * FROM t order by id LIMIT 1; oracle取第一条数据写法 SELECT * FROM t where rownum =1 order by id; ok,上面是mysql和oracle取第一条数据的写法对比,不过这只是rownum的一种用法,rownum还可以用于批量写数据 往t表批量写一万条数据:

随机推荐