C# Winform在win10裡彈出無焦點的視窗
阿新 • • 發佈:2018-11-03
原文:
C# Winform在win10裡彈出無焦點的視窗
當前用的是win10系統,怎麼嘗試都不行,沒有任何效果,依舊焦點被彈出的視窗截取了。
有個專案需要在右下角彈出廣告視窗,但是又不能影響使用者的使用,視窗不能有焦點。
在網上搜了一堆,都是以下的程式碼,在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; } }