比如我们正在编写一份文档,这时如果弹出一个窗口的话就会打断我们的操作,如何使窗口弹出时不影响用户当前的操作呢?
可以利用系统钩子,在弹出窗口前获取当前的活动窗口,弹出窗口后将活动窗口重新还原
[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换回活动窗口