C#制作鼠标可以穿透的窗体

把窗体的FormBorderStyle设为FormBorderStyle.None

using System.Runtime.InteropServices;

        private const uint WS_EX_LAYERED = 0x80000;
        private const int WS_EX_TRANSPARENT = 0x20;
        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
        );

        /// <summary>
        /// 使窗口有鼠标穿透功能
        /// </summary>
        public void CanPenetrate()
        {
            uint intExTemp = GetWindowLong(this.Handle, GWL_EXSTYLE);
            uint oldGWLEx = SetWindowLong(this.Handle, GWL_EXSTYLE, WS_EX_TRANSPARENT | WS_EX_LAYERED);
            SetLayeredWindowAttributes(this.Handle, 0, 100, LWA_ALPHA);
        } 

要时窗体恢复正常,只要执行以下语句:
                this.FormBorderStyle = FormBorderStyle.None;

时间: 2024-12-30 00:19:28

C#制作鼠标可以穿透的窗体的相关文章

Winform实现鼠标可穿透的窗体镂空效果_C#教程

今天找到一个名叫LICEcap的录屏软件,录制界面是这样的: 这个炫酷的空心窗口就是镜头,调整好大小,然后对准需要录制的地方按下Record就可以生成gif了. 卧槽太NB了我也要做一个! 根据StackOverflow站的提示(在这里),我们需要使用一个在Windows2000及之后平台可用的,用以实现不规则窗体的分层窗口API (SetLayerWindowAttributes).根据百度我们先需要使用一个名为SetWindowLong的Win32 API来把窗体设定为分层窗体. 为了在.N

如何通过鼠标控制无标头窗体

这个问题也是来自论坛提问,同样是.Net WinForm新手的问题,这样的问题如果在Deplphi这样的板块立刻就被秒杀了,可是.Net版知道的人好像不太多. 介绍两个方法,一个是发送SC_Move消息,一个是改变鼠标区域消息 方法一: 1.using System;2.using System.Collections.Generic;3.using System.ComponentModel;4.using System.Data;5.using System.Drawing;6.using

gui-unity3d 鼠标事件穿透GUI界面的问题

问题描述 unity3d 鼠标事件穿透GUI界面的问题 在用OnGUI函数绘制窗体时,鼠标在窗体或控件上面操作时,场景则不应该响应鼠标事件.网上一般用 GUIUtility.hotcontrol!=0来屏蔽,当hotControl不为0时说明有控件处于激活状态.查官方文档,当鼠标在GUI控件上面按下时,hotcontrol被设置为该控件的ID,当鼠标按键被弹起时,hotcontrol为设置为0,因为在场景里面只能配合鼠标按下事件,不能配合鼠标弹起,因为此时hotcontrol已经被引擎置为0了.

C#制作高仿360安全卫士窗体(四)- 水晶按钮

原文http://www.cnblogs.com/kovin/archive/2013/10/18/3375977.html 项目越来越紧,我也乐此不疲.自从上次C#制作高仿360安全卫士窗体(三)出来之后,就开始有一些人在说为什么还在坚持写这么落后的东西.我想说的是,我是从事企业信息化工作的,所有程序都只对内部使用.所以只要能满足需求就可以,比较高端先进的技术也没有时间去学习研究.OK继续上次的内容.上次说到制作文本框,今天要写的是怎么实现水晶按钮的制作.下面是效果图: 下面是这个按钮所需要的

C#制作高仿360安全卫士窗体(三)

原文 http://www.cnblogs.com/kovin/archive/2013/09/11/3314858.html 距上篇C#制作高仿360安全卫士窗体(二)也 将近一个多月了,这个月事情还是像往常一样的多.不多我也乐在其中,毕竟我做的是我喜欢做的东西.今天特地抽空把怎么制作文本框写一下.同时也希望有爱好 这些玩意的同仁和我进行交流... 文本框的开发比起按钮开发还是有一点不同,因为我这里主要是给文本框做美化,所以不需要完完全全的进行自己开发.只是重写它的某些事件,然后展现不同的效

用CSS制作鼠标经过图像

css|鼠标 以前我们用表格来布局网页时,我们都很喜欢用DW(Dreamweav)中的"鼠标经过图像",因为那的确吸引人!但是我们也同样发现这样的一个问题:当网速不太快的时候,鼠标经过后的图片还没有下载下来,看上去很不美观.并且还需要一大堆的JS代码,还需要预载经过图片.相对来说比较麻烦!特别是对那些现在记事本来手工编写网页的朋友更是烦得很.事实上用CSS就可以解决这个问题,并且非常的简单,下载快,不会出现鼠标经过后的图片还没有下载下来这种情况.这个做法的原理很简单:就是用<a&

实例讲解:用CSS制作“鼠标经过图像”

css|鼠标 以前我们用表格来布局网页时,我们都很喜欢用DW(Dreamweav)中的"鼠标经过图像",因为那的确吸引人!但是我们也同样发现这样的一个问题:当网速不太快的时候,鼠标经过后的图片还没有下载下来,看上去很不美观.并且还需要一大堆的JS代码,还需要预载经过图片.相对来说比较麻烦!特别是对那些现在记事本来手工编写网页的朋友更是烦得很.事实上用CSS就可以解决这个问题,并且非常的简单,下载快,不会出现鼠标经过后的图片还没有下载下来这种情况.这个做法的原理很简单:就是用<a&

用FrontPage制作鼠标光照特殊效果

frontpage|鼠标 我们知道,利用Flash动画制作软件可以制作出生动的鼠标光照效果.其实,我们利用FrontPage同样可以在网页中实现鼠标的光照效果,而且制作出来的文件存储容量还要比Flash小.其中,用FrontPage制作鼠标光照效果的具体编码如下: 〈body bgcolor="Black"〉 〈div id="myLightObject" style="position: relative; height: 500px; width: 5

用FrontPage 2000制作鼠标光照特效

frontpage|鼠标|特效 我们知道,利用Flash动画制作软件可以制作出生动的鼠标光照效果.其实,我们利用FrontPage同样可以在网页中实现鼠标的光照效果,而且制作出来的文件存储容量还要比Flash小.其中,用FrontPage制作鼠标光照效果的具体编码如下: <body bgcolor="Black"> <div id="myLightObject" style="position: relative; height: 500