首页 > 编程语言 >C# 窗口鼠标穿透以及取消窗口鼠标穿透

C# 窗口鼠标穿透以及取消窗口鼠标穿透

时间:2023-06-12 16:15:30浏览次数:44  
标签:窗口 鼠标 int hwnd private 穿透 WS EXSTYLE GWL

 

        private const int WS_EX_TRANSPARENT = 0x20;

        private const int GWL_EXSTYLE = -20;

        /// <summary>
        /// window 扩展样式 分层显示
        /// </summary>
        private  const int WS_EX_LAYERED = 0x00080000;//取消鼠标穿透的


        [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.dll", CharSet = CharSet.Auto)]
        private static extern int SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int y, int Width, int Height, int flags);

        public static void SetTranMouseWind(Window window)
        {
            try
            {
                IntPtr hwnd = new WindowInteropHelper(window).Handle;
                uint extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
                SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
            }
            catch { }

        }
        public static void ReSetNormalWind(Window window)
        {
            try
            {
                IntPtr hwnd = new WindowInteropHelper(window).Handle;
                uint extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE| WS_EX_LAYERED);
                SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_LAYERED);
            }
            catch { }

        }

  

标签:窗口,鼠标,int,hwnd,private,穿透,WS,EXSTYLE,GWL
From: https://www.cnblogs.com/wgscd/p/17475277.html

相关文章

  • vue实现简单的鼠标拖拽横向滚动 和 鼠标滚轮横向滚动
    一.鼠标拖拽滚动以下代码项目中直接使用即可,此种方法是通过鼠标拖拽进行滚动,滑动滚轮无效果。当然快捷键,shift+鼠标滚轮可以控制横向滚动,对用户来说体验不友好。<divclass="tab-listid="nav"><divclass="tab-item"v-for="(item,index)inlist":key=""></div></d......
  • Python实现定时自动关闭的tkinter窗口
    功能简要说明:程序运行后10秒钟自动关闭。技术要点:tkinter应用程序的destroy()方法,多线程编程。代码截图:运行效果:......
  • linux窗口管理工具 screen
    linux窗口管理工具-screen简明教程前言screen是一个用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。其操作非常简洁易懂,这里简要记录一下基本的使用方法。背景介绍GNUScreen是一款由GNU计划开发的用于命令行终......
  • Python+matplotlib实现鼠标跟随的动态距离标注
    问题描述:显示一幅图像,鼠标左键按下后移动时实时显示当前位置与鼠标按下时初始位置的直线距离,同时显示一条从初始位置到当前位置的红色直线。参考代码:运行效果:公众号“Python小屋”......
  • 简单滑动窗口题目解析(c实现)
    下面的题目要使用的主要思路为滑动窗口,但是还需要使用哈希表来储存窗口中的元素个数题目一:无重复字符的最长子串题目一链接给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所......
  • Python响应Ctrl键+鼠标滚轮操作动态调整文本框的字号
    编写程序,使用tkinter设计程序界面,其中放置带滚动条的文本框组件ScrolledText,当鼠标悬于该组件上方时,可以通过Ctrl键和鼠标滚轮来动态调整文本框中文本的字号,鼠标滚轮向上滚动时增大字号,向下滚动时减小字号。参考代码:......
  • Python+matplotlib响应鼠标滚轮事件调整图形大小
    任务描述:使用Python+matplotlib绘制一条正弦曲线,然后响应鼠标滚轮事件,鼠标向上滚动放大图形,鼠标向下滚动缩小图形。再结合matplotlib提供的平移工具,方便查看图形的任意部位。参考代码:......
  • Python+tkinter动态显示与隐藏窗口上的组件
    使用Python+tkinter创建应用程序窗口,根据需要动态显示和隐藏特定的组件。可能的应用场景:多个相似的功能共用同一个窗口,根据标志位来控制需要隐藏和显示哪些组件。如果整个界面在完成某个功能时完全不需要显示某个组件,也可以根据标志位的不同选择性地执行组件的place()方法。参考代......
  • 利用云服务器实现内网穿透(frp),开启个人电脑(windows)可远程桌面访问
     前言:利用微软自带的远程桌面进行访问,但无奈没有固定的公网地址,使用其他三方软件免费使用会有网络延迟等问题,因此需要一个相对稳妥的方式,那便是配合frp内网穿透实现远程访问个人电脑前提:有一台云服务器(需要公网ip,最好是国内的,延迟会较低) 教程步骤:1.下载frpfrp分为客......
  • Unity3D:Project窗口
    推荐:将NSDT场景编辑器加入你的3D工具链3D工具集:NSDT简石数字孪生Project窗口“项目”窗口显示与项目相关的所有文件,是您在应用程序中导航和查找资源和其他项目文件的主要方式。默认情况下,当您启动新项目时,此窗口处于打开状态。但是,如果找不到它,或者它已关闭,您可以通过“常规>......