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);

  • 相关阅读:
    836. Rectangle Overlap
    背包问题---01背包最优方案总数(原理剖析代码实现)
    背包问题---01背包(原理,伪代码,编程实现)
    DP---基本思想 具体实现 经典题目 POJ1160 POJ1037
    DP---(POJ1159 POJ1458 POJ1141)
    DP--HDU 1003(最大子串和)
    DP----入门的一些题目(POJ1088 POJ1163 POJ1050)
    DFS(DP)---POJ 1014(Dividing)
    博弈---斐波那契博弈
    元素相加交换另解&puts的一个用法
  • 原文地址:https://www.cnblogs.com/IT-haidong/p/4668294.html
Copyright © 2011-2022 走看看