C# Winform在win10裏彈出無焦點的窗口
阿新 • • 發佈:2018-11-03
ide href 一段 最終 影響 sdn 利用 sta eas 原文:C# Winform在win10裏彈出無焦點的窗口
當前用的是win10系統,怎麽嘗試都不行,沒有任何效果,依舊焦點被彈出的窗口截取了。
版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/wangmy1988/article/details/78617139
有個項目需要在右下角彈出廣告窗口,但是又不能影響用戶的使用,窗口不能有焦點。
在網上搜了一堆,都是以下的代碼,在form中添加一段樣式。
protected override CreateParams CreateParams { get { const int WS_EX_NOACTIVATE = 0x08000000; CreateParams cp = base.CreateParams; cp.ExStyle |= WS_EX_NOACTIVATE; return cp; } }
當前用的是win10系統,怎麽嘗試都不行,沒有任何效果,依舊焦點被彈出的窗口截取了。
然後網上又找到了一段代碼,是利用系統的API,先獲取之前的激活的窗口,彈出新窗口了再重置之前窗口為激活,這樣的話還是會影響之前的操作,不夠完美。
//引用系統API [DllImport("user32.dll")] public static extern IntPtr GetActiveWindow(); [DllImport("user32.dll")] public static extern IntPtr SetActiveWindow(IntPtr hwnd); private AdForm mf = null; private void button_Click(object sender, EventArgs e) { IntPtr activeForm = GetActiveWindow();//先得到當前的活動窗體? if (mf == null) { mf = new AdForm(); mf.Show(); } SetActiveWindow(activeForm); //在把焦點還給之前的活動窗體 }
protected override CreateParams CreateParams { get { const int WS_EX_NOACTIVATE = 0x08000000; const int WS_CHILD = 0x40000000; CreateParams cp = base.CreateParams; cp.Style |= WS_CHILD; cp.ExStyle |= WS_EX_NOACTIVATE; return cp; } }
C# Winform在win10裏彈出無焦點的窗口