鼠标穿透 有形无影

Public Class Form1

Private Declare Function GetWindowLong Lib
"user32" Alias
"GetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex
As Integer) As Integer

Private Declare Function SetWindowLong Lib
"user32" Alias
"SetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex
As Integer, ByVal dwNewLong As Integer) As Integer

Const GWL_EXSTYLE = (-20)

Const WS_EX_LAYERED = &H80000

Const WS_EX_TRANSPARENT As
Integer = &H20&

Private Sub
Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click

Me.TopMost = True

Me.Opacity = 0.3

SetWindowLong(Me.Handle, GWL_EXSTYLE,
GetWindowLong(Me.Handle, GWL_EXSTYLE) Or WS_EX_LAYERED Or
WS_EX_TRANSPARENT) ‘鼠标穿透

SetWindowLong(Me.Handle, GWL_EXSTYLE,
WS_EX_LAYERED) ‘取消鼠标穿透

End Sub

End Class

时间: 2025-01-03 22:50:20

鼠标穿透 有形无影的相关文章

[实例]鼠标穿透窗口 & 窗口渐变透明 By 小鸟喳喳叫

理论讲解请点击这里查看 ==> 传送门 注:本教程需要原料 Photoshop(我用的是CS6) 第一步:创建一个窗口(实现鼠标穿透) WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style            = CS_HREDRAW | CS_VREDRAW;    wcex.lpfnWndProc    = WndProc;    wcex.cbClsExtra        = 0;    wcex.cbWndExtr

linux下鼠标穿透和取消穿透--linux小白,大神无视

最近在用qt写一个跨平台的软件,因为设置了无边框,并且我自己给程序窗口加了阴影,阴影范围又比较大 所以必须给阴影区域加上鼠标穿透才能有更好的体验. 上网查了一下,在windows下使用SetWindowLong就行 在linux下的搜了好久也找到了一个方法 就是XShapeCombineRectangles(QX11Info::display(), winId(), ShapeInput, 0,0, NULL, 0, ShapeSet, YXBanded);(需要#include <X11/ex

qt 窗口鼠标穿透

Qt 不规则窗体 – 鼠标点击穿透 qt实现鼠标穿透,如果要被穿透窗口只有一层,也即没有嵌套窗口,直接只用对子窗口使用setAttribute (Qt::WA_TransparentForMouseEvents,true);就ok,意味着鼠标事件让父窗口响应. 如果要穿透的窗口含有嵌套窗口,那么接着往下看 快速使用 /////////////////////////////////////////////////////////////// #ifdef Q_OS_LINUX  XShapeCo

C#窗体设计------鼠标穿透窗体

技巧解析:主要用到了两个系统API函数 SetWindowLong和GetWindowLong 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9

[随笔]关于如何实现鼠标穿透窗口和窗口半透明

资料准备 WS_EX_TRANSPARENT | WS_EX_LAYERED WM_NCHITTEST & return HTTRANSPARENT SetLayeredWindowAttributes(-) UpdateLayeredWindow(-) 旁征博引 窗口类型 Overlapped Windows Pop-up Windows Child Windows Layered Windows             \\分层窗口(这是我们这节课研究的重点) Message-Only Wi

C#使用Windows API实现桌面上的遮罩层(鼠标穿透)

C#实现实现桌面上的遮罩层(鼠标穿透)主要通过一下几个API函数来实现:GetWindowLong,SetWindowLong,SetLayeredWindowAttributes.其中有一个Windows 消息 WS_EX_TRANSPARENT 比较重要,它实现了鼠标穿透的功能. 下面来看看完整的实现代码: using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropS

winform和wpf如何实现鼠标穿透的效果

先看一下鼠标穿透的效果: 可以看到Form1这个程序虽然遮在了桌面的上面,但是我们还可以在窗体上点击桌面上的必应词典和网易邮箱大师,好像这个叫“Form1”的窗口被“穿透”一样. winform版本: 1.设置TransparencyKey=BackColor=control颜色,鼠标会穿透窗体 this.painel.BackColor = System.Drawing.SystemColors.Control;   //这里的Painel是一个System.Windows.Forms.Pan

WPF 鼠标穿透窗口

public partial class AnimationEffectWindow : Window { public AnimationEffectWindow() { InitializeComponent(); SourceInitialized += delegate { IntPtr hwnd = new WindowInteropHelper(this).Handle; uint extendedStyle = GetWindowLong(hwnd, GwlExstyle); Se

Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)

解决方案 : http://www.cnblogs.com/fly-100/p/4570366.html 这里我们直接在使用Input.GetMouseButtonDown(0)的地方加了一个检测函数,CheckGuiRaycastObjects,如下 bool CheckGuiRaycastObjects() { PointerEventData eventData = new PointerEventData(Main.Instance.eventSystem); eventData.pre