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

窗体穿透,渐变,眼保时间提示工具

2012-09-28 
窗体穿透,渐变,眼保时间提醒工具代码下载址C# codeusing Systemusing System.Collections.Genericusing

窗体穿透,渐变,眼保时间提醒工具
代码下载址

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;namespace FormTrans{    public partial class Form1 : Form    {        public Form1()        {            base.SetStyle(ControlStyles.DoubleBuffer    | ControlStyles.AllPaintingInWmPaint,  true);            InitializeComponent();        }        public const int WS_EX_WINDOWEDGE = 0x100; //窗口具有凸起的3D边框         public const int WS_EX_CLIENTEDGE = 0x200; //窗口具有阴影边界         public const int WS_EX_TOOLWINDOW = 0x80; //小标题工具窗口         public const int WS_EX_TOPMOST = 0x8; //窗口总在顶层         public const int WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE); //WS_EX-CLIENTEDGE和WS_EX_WINDOWEDGE的组合         public const int WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST); //WS_EX_WINDOWEDGE和WS_EX_TOOLWINDOW和WS_EX_TOPMOST的组合         public const int WS_EX_DLGMODALFRAME = 0x1; //带双边的窗口         public const int WS_EX_NOPARENTNOTIFY = 0x4; //窗口在创建和销毁时不向父窗口发送WM_PARENTNOTIFY消息         public const int WS_EX_TRANSPARENT = 0x20; //窗口透眀         public const int WS_EX_MDICHILD = 0x40; //MDI子窗口         public const int WS_EX_CONTEXTHELP = 0x400; //标题栏包含问号联机帮助按钮         public const int WS_EX_RIGHT = 0x1000; //窗口具有右对齐属性         public const int WS_EX_RTLREADING = 0x2000; //窗口文本自右向左显示         public const int WS_EX_LEFTSCROLLBAR = 0x4000; //标题栏在客户区的左边         public const int WS_EX_CONTROLPARENT = 0x10000; //允许用户使用Tab键在窗口的子窗口间搜索         public const int WS_EX_STATICEDGE = 0x20000; //为不接受用户输入的项创建一个三维边界风格         public const int WS_EX_APPWINDOW = 0x40000; //在任务栏上显示顶层窗口的标题按钮         public const int WS_EX_LAYERED = 0x80000; //窗口具有透眀属性(Win2000)以上         public const int WS_EX_NOINHERITLAYOUT = 0x100000; //窗口布局不传递给子窗口(Win2000)以上         public const int WS_EX_LAYOUTRTL = 0x400000; //水平起点在右边的窗口         public const int WS_EX_NOACTIVATE = 0x8000000; //窗口不会变成前台窗口(Win2000)以上         public const int WS_EX_LEFT = 0x0; //窗口具有左对齐属性         public const int WS_EX_LTRREADING = 0x0; //窗口文本自左向右显示         public const int WS_EX_RIGHTSCROLLBAR = 0x0; //垂直滚动条在窗口的右边界         public const int WS_EX_ACCEPTFILES = 0x10; //接受文件拖曳         public const int WS_EX_COMPOSITED = 0x2000000; //窗体所有子窗口使用双缓冲从低到高绘制(XP)          private const int GWL_STYLE = (-16);        private const int GWL_EXSTYLE = (-20);        private const int LWA_ALPHA = 0x2;        [DllImport("user32", EntryPoint = "SetWindowLong")]        private static extern uint SetWindowLong(        IntPtr hwnd,        int nIndex,        uint dwNewLong        );        [DllImport("user32", EntryPoint = "GetWindowLong")]        private static extern uint GetWindowLong(        IntPtr hwnd,        int nIndex        );        [DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")]        private static extern int SetLayeredWindowAttributes(        IntPtr hwnd,        int crKey,        int bAlpha,        int dwFlags        );        [DllImport("user32.dll")]        public static extern IntPtr GetActiveWindow();        [DllImport("user32.dll")]        public static extern bool GetWindowRect(IntPtr handle, ref RECT lpRect);        [Serializable, StructLayout(LayoutKind.Sequential)]        public struct RECT        {            public int left;            public int top;            public int right;            public int bottom;        }         protected override void OnLoad(EventArgs e)        {            base.OnLoad(e);            this.ShowInTaskbar = false;            this.timer2.Interval = 1000 * 60 * 15;            this.timer3.Interval = 10000;            SetPenetrate();                    }        /// <summary>        /// 设置窗体具有鼠标穿透效果        /// </summary>        public void SetPenetrate()        {            this.TopMost = true;            GetWindowLong(this.Handle, GWL_EXSTYLE);            SetWindowLong(this.Handle, GWL_EXSTYLE, WS_EX_TRANSPARENT | WS_EX_LAYERED);            SetLayeredWindowAttributes(this.Handle, 0, 20, LWA_ALPHA);        }        protected override void OnPaint(PaintEventArgs e)        {            e.Graphics.DrawString("你需要休息一下了", this.Font, Brushes.Yellow, e.ClipRectangle);            base.OnPaint(e);        }        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)        {            this.Close();        }        float _Opacity = 0.01f;        private void timer1_Tick(object sender, EventArgs e)        {            if (this.Opacity < 0.05f)            {                 _Opacity = _Opacity * -1;            }            if (this.Opacity >0.2f)            {                 _Opacity = _Opacity * -1;            }            this.Opacity = this.Opacity + _Opacity;        }        protected override CreateParams CreateParams        {            get            {                 CreateParams cp = base.CreateParams;                cp.ExStyle |= WS_EX_NOACTIVATE;                return cp;            }        }        private void timer2_Tick(object sender, EventArgs e)        {            if (!this.Visible)            {                IntPtr hwnd = GetActiveWindow();                RECT rect = new RECT();                if (GetWindowRect(hwnd, ref   rect))                {                    this.Width = rect.right - rect.left;                    this.Height = rect.bottom - rect.top;                    this.Left = rect.left;                }            }            this.Opacity = 0.2f;            this.timer3.Enabled = true;            this.Visible = true;        }        private void timer3_Tick(object sender, EventArgs e)        {            this.Visible = false;            this.timer3.Enabled = false;        }     }} 



[解决办法]
分享吗,支持
[解决办法]
下载中。。。。。。。
[解决办法]
不错不错
[解决办法]
下载前支持一下
[解决办法]
探讨

用了两天,感觉还不错。不会影响到工作。

[解决办法]
支持分享
[解决办法]
不知道怎么玩,请莎士比亚指教一下。
[解决办法]
求指导 咋用
[解决办法]
啊哦 我之前写过 不过木用api 都是vs的控件 timer控制的
下载这个学习下
[解决办法]
不错,值得分享
[解决办法]
谢谢 ,学些特效
[解决办法]
现在只要发点代码,都是推荐帖
这帖也快被推荐了


[解决办法]
支持分享 

[解决办法]
感谢分享,学习了!
[解决办法]

谢谢分享!
[解决办法]
分享咯,感谢
[解决办法]
探讨

分享咯,感谢

[解决办法]
谢谢分享。

[解决办法]
这个很及时,需要
[解决办法]
好 谢谢 楼主
[解决办法]
楼主这个头像,让我Hold不住啊……
[解决办法]
不错啊
[解决办法]
这个怎么用?~
[解决办法]
不错不错,学习了
[解决办法]
谢谢楼主啊。
[解决办法]

[解决办法]
尝试一下
[解决办法]
支持分享
[解决办法]
感谢楼主分享
[解决办法]
谢谢分享
[解决办法]
探讨

引用:

用了两天,感觉还不错。不会影响到工作。


倒是你的头像看得我眼晕,哈哈!

[解决办法]
谢谢分享
[解决办法]
请教楼主个问题
我把窗体的边框和标题栏去掉了,然后,怎样在窗体四周显示阴影或者黑边呢?
没有阴影,如果窗体的颜色和桌面背景的色彩一致,就区分不了边界了!


[解决办法]
谢谢分享
[解决办法]
谢谢分享···
[解决办法]
谢谢分享···谢谢分享···
[解决办法]
现在就有一个程序是怎么搞得,总来的来说,效果不好~~经常卡顿..winform已经被wpf完全超越了,如果选择了winform完全是为了低配置的电脑,也不再需要怎么花哨的效果了
[解决办法]
很好用》。。
[解决办法]
不错不错
[解决办法]
louzhuhaengqiangda
[解决办法]
刚说要写一个,楼主就写好了,万分感谢!!!!!
[解决办法]
有效果吗 ????
[解决办法]
不错 支持一下
[解决办法]
支持一下
[解决办法]
支持一下
[解决办法]
学习了,多谢分享
[解决办法]
顶,很不错的代码
[解决办法]
直接用上了.谢谢.
[解决办法]
谢谢楼主分享
[解决办法]
分享帖?强烈支持。都说了是眼保了,代码就不要看了~~~
[解决办法]
层窗口+定时器啊, 哈哈哈
[解决办法]
果断收藏了...
[解决办法]
没用过C# 这玩意怎么编译运行?
[解决办法]
感觉头像有点不对劲
[解决办法]
你的头像就挺费眼的

探讨
护眼是个大事。

[解决办法]
不错噢 下载回去 好好学习一下 呵呵
[解决办法]
谢谢分享

[解决办法]
谢谢分享!
[解决办法]
支持

热点排行