| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Windows.Forms;
- namespace Y.Test.Views
- {
- public partial class TestCrossForm : Form
- {
- #region 窗体穿透
- 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 = 0;
- [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 SetPenetrate()
- {
- this.TopMost = true;
- SetWindowLong(this.Handle, GWL_EXSTYLE, WS_EX_TRANSPARENT | WS_EX_LAYERED);
- SetLayeredWindowAttributes(this.Handle, 0, 100, LWA_ALPHA);
- }
- #endregion
- public TestCrossForm()
- {
- InitializeComponent();
- }
- private void TestCrossForm_Load(object sender, EventArgs e)
- {
- SetPenetrate();
- }
- }
- }
|