弹来弹去跑马灯!

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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 { }
 
}

  

posted @   wgscd  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
历史上的今天:
2019-06-12 VB6 Webbowser控件与JS交互,无边框和屏蔽右键菜单
点击右上角即可分享
微信分享提示