c#实现Form窗体始终在桌面最前端显示
时间:2014-06-28 12:36:54
收藏:0
阅读:582
方法一:
//调用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);
评论(0)