zoukankan      html  css  js  c++  java
  • 实现鼠标穿透窗体

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;

    namespace MouseThroughForm
    {
    public partial class Frm_Main : Form
    {
    public Frm_Main()
    {
    InitializeComponent();
    }

    private const uint WS_EX_LAYERED = 0x80000;
    private const int WS_EX_TRANSPARENT = 0x20;
    private const int GWL_EXSTYLE = (-20);
    private string Var_genre = "";//记录当前操作的类型

    #region 在窗口结构中为指定的窗口设置信息
    /// <summary>
    /// 在窗口结构中为指定的窗口设置信息
    /// </summary>
    /// <param name="hwnd">欲为其取得信息的窗口的句柄</param>
    /// <param name="nIndex">欲取回的信息</param>
    /// <param name="dwNewLong">由nIndex指定的窗口信息的新值</param>
    /// <returns></returns>
    [DllImport("user32", EntryPoint = "SetWindowLong")]
    private static extern uint SetWindowLong(IntPtr hwnd, int nIndex, uint dwNewLong);
    #endregion

    #region 从指定窗口的结构中取得信息
    /// <summary>
    /// 从指定窗口的结构中取得信息
    /// </summary>
    /// <param name="hwnd">欲为其获取信息的窗口的句柄</param>
    /// <param name="nIndex">欲取回的信息</param>
    /// <returns></returns>
    [DllImport("user32", EntryPoint = "GetWindowLong")]
    private static extern uint GetWindowLong(IntPtr hwnd, int nIndex);
    #endregion

    #region 使窗口有鼠标穿透功能
    /// <summary>
    /// 使窗口有鼠标穿透功能
    /// </summary>
    private void CanPenetrate()
    {
    uint intExTemp = GetWindowLong(this.Handle, GWL_EXSTYLE);
    uint oldGWLEx = SetWindowLong(this.Handle, GWL_EXSTYLE, WS_EX_TRANSPARENT | WS_EX_LAYERED);
    }
    #endregion

    private void Frm_Main_Load(object sender, EventArgs e)
    {
    this.ShowInTaskbar = false;//窗体不出现在Windows任务栏中
    CanPenetrate();
    this.TopMost = true;//使窗体始终在其它窗体之上
    }

    #region 设置颜色和透明度的状态
    /// <summary>
    /// 设置颜色和透明度的状态
    /// </summary>
    private void SetEstate(Form Frm, object sender)
    {
    Var_genre = ((ToolStripMenuItem)sender).Name;
    string Tem_Str = Var_genre;
    if (Var_genre.IndexOf('_') >= 0)
    {
    Var_genre = Tem_Str.Substring(0, Tem_Str.IndexOf('_'));
    }

    switch (Var_genre)
    {
    case "ToolColor":
    {
    Color Tem_Color=Color.Gainsboro;
    switch (Convert.ToInt32(((ToolStripMenuItem)sender).Tag.ToString()))
    {
    case 1: Tem_Color = Color.Gainsboro; break;
    case 2: Tem_Color = Color.DarkOrchid; break;
    case 3: Tem_Color = Color.RoyalBlue; break;
    case 4: Tem_Color = Color.Gold; break;
    case 5: Tem_Color = Color.LightGreen; break;
    }
    Frm.BackColor = Tem_Color;
    break;
    }
    case "ToolClarity":
    {
    double Tem_Double = 0.0;
    switch (Convert.ToInt32(((ToolStripMenuItem)sender).Tag.ToString()))
    {
    case 1: Tem_Double = 0.1; break;
    case 2: Tem_Double = 0.2; break;
    case 3: Tem_Double = 0.3; break;
    case 4: Tem_Double = 0.4; break;
    case 5: Tem_Double = 0.5; break;
    case 6: Tem_Double = 0.6; break;
    case 7: Tem_Double = 0.7; break;
    case 8: Tem_Double = 0.8; break;
    case 9: Tem_Double = 0.9; break;

    }
    Frm.Opacity = Tem_Double;
    break;
    }
    case "ToolAcquiescence":
    {
    Frm.BackColor = Color.Gainsboro;
    Frm.Opacity = 0.6;
    break;
    }
    case "ToolClose":
    {
    Close();
    break;
    }

    }
    }
    #endregion

    private void ToolColor_Glass_Click(object sender, EventArgs e)
    {
    SetEstate(this, sender);
    }
    }
    }

  • 相关阅读:
    update 更改字段
    查看 links
    oracle 统计字段空值数
    查看oracle 数据库编码个格式
    oracle 数据库DBA权限
    一文弄懂 Golang 排序
    Golang Linux、Windows、Mac 下交叉编译
    go 简单封装数学运算包
    [Vue warn]: Unknown custom element: did you register the component correctly?
    深度图怎么看行情走势
  • 原文地址:https://www.cnblogs.com/ysz12300/p/5512861.html
Copyright © 2011-2022 走看看