zoukankan      html  css  js  c++  java
  • C#代码像QQ的右下角消息框一样,无论现在用户的焦点在哪个窗口,消息框弹出后都不影响焦点的变化,那么有两种方法

    你QQ的右下角消息框一样,无论现在用户的焦点在哪个窗口,消息框弹出后都不影响焦点的变化,那么有两种方法:

    要么重写需要弹出的窗体的事件:

    protected override CreateParams CreateParams    
    {
        get
        {
            const int WS_EX_NOACTIVATE = 0x08000000;
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= WS_EX_NOACTIVATE;
            return cp;
        }
    }
    // CreateParams 在 System.Windows.Forms.Controls 命名空间下

    要么调用系统钩子:

    // 引用系统钩子
    [DllImport("user32.dll")]
    public static extern IntPtr GetActiveWindow();
     
    [DllImport("user32.dll")] 
    public static extern IntPtr SetActiveWindow(IntPtr hwnd);
      
    // 在窗口弹出时做以下处理
    IntPtr activeForm = GetActiveWindow(); // 先得到当前的活动窗体 
    new form2.Show(false); // 弹出新窗体
    SetActiveWindow(activeForm); // 在把焦点还给之前的活动窗体


  • 相关阅读:
    项目总结
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    浅谈Vue与swiper轮播图框架结合小案例
  • 原文地址:https://www.cnblogs.com/waw/p/6014421.html
Copyright © 2011-2022 走看看