1. 程式人生 > >c#避免彈出視窗獲取焦點

c#避免彈出視窗獲取焦點

比如我們正在編寫一份文件,這時如果彈出一個視窗的話就會打斷我們的操作,如何使視窗彈出時不影響使用者當前的操作呢?

可以利用系統鉤子,在彈出視窗前獲取當前的活動視窗,彈出視窗後將活動視窗重新還原

[System.Runtime.InteropServices.DllImport("user32.dll")]          
public static extern IntPtr GetActiveWindow();//獲得當前活動窗體         
[System.Runtime.InteropServices.DllImport("user32.dll")]          
public static extern IntPtr SetActiveWindow(IntPtr hwnd);//設定活動窗體


在彈出視窗的地方使用:

IntPtr activeForm = GetActiveWindow();//A彈出視窗前獲得當前活動視窗
form.show();//要彈出的視窗
SetActiveWindow(activeForm);//B換回活動視窗