zoukankan      html  css  js  c++  java
  • c#实现Form窗体始终在桌面最前端显示

    方法一

    //调用API

    [System.Runtime.InteropServices.DllImport("user32", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)]

    public static extern IntPtr GetFocus(); //获得本窗体的句柄

    [System.Runtime.InteropServices.DllImport("user32", EntryPoint = "SetForegroundWindow")]

    public static extern bool SetFocus(IntPtr hWnd);//设置此窗体为活动窗体


    // 定义变量,句柄类型

    public IntPtr han;

    private void Form1_Load(object sender, EventArgs e){

    //在窗体加载的时候给变量赋值,即将当前窗体的句柄赋给变量

    han = this.Handle;

    }
    private void timer1_Tick(object sender, EventArgs e){

    // 加载一个定时器控件,验证当前WINDOWS句柄是否和本窗体的句柄一样,如果不一样,则激活本窗体

    if (han != GetFocus()){

    SetFocus(han);

    }

    this.WindowState = FormWindowState.Normal;

    }

    方法二

    [System.Runtime.InteropServices.DllImport("user32")]
    private static extern IntPtr GetActiveWindow();//获取当前窗体的活动状态

    // 判断当前窗口是否处于活动状态的方法

    private bool ThisIsActive(){ return (GetActiveWindow() == this.Handle);}

    private void timer1_Tick(object sender, EventArgs e){

    if (!ThisIsActive()){

    this.Activate();

    }

    this.WindowState = FormWindowState.Normal;

    }

    方法三

    [DllImport("user32")]
    private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);

    [DllImport("user32")]
    private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

    //在窗体On_Load事件中添加(Santos的代码):
    IntPtr hDeskTop=FindWindow("Progman", "Program Manager");
    SetParent(this.Handle,hDeskTop);

  • 相关阅读:
    Eclipse安装python注意事项
    C# 计算文件MD5
    C# 为私有方法添加单元测试(反射)
    .net 操作sftp服务器
    在ASP.NET MVC中使用Unity进行依赖注入的三种方式
    ASP.NET Web API 安全筛选器
    Token Based Authentication in Web API 2
    IIS中查看W3P.exe进程对应的应用程序池的方法
    WCF自定义Header
    sqlserver 用 RowNumber 分组
  • 原文地址:https://www.cnblogs.com/IT-haidong/p/4668294.html
Copyright © 2011-2022 走看看