如何从任务栏c#获取程序

时间:2016-02-18 14:31:27

标签: c# wpf winforms bringtofront

有人可以告诉我如何从任务栏将我的程序带到前面(我不知道这是好名字)或者在c#中winform / wpf中这个事件的名称是什么。问题有时(并不是所有的时间)当我把我的程序缩小并再次点击然后可以显示它但有时仍然在另一个程序下我希望在我点击图标时制作代码我的程序然后总是带到前面。

Example paint

1 个答案:

答案 0 :(得分:1)

尝试使用SetForegroundWindow()ShowWindow()方法 它们的导入是

[DllImport("User32.dll")]
internal static extern IntPtr SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll")]
internal static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

声明一个名为ActiveResize的常量(或任何你想要的名字。就像这样。internal const int ActiveResize = 3; More size codes here.

然后生成一个看起来像这样的激活事件

private void YOURPROGRAM_Activated(object sender, EventArgs e)
{
    Process currentProcess = Process.GetCurrentProcess();
    IntPtr hWnd = currentProcess.MainWindowHandle;
    if (hWnd != User32.InvalidHandleValue)
    {
        User32.SetForegroundWindow(hWnd);
        User32.ShowWindow(hWnd, ActiveResize);
    }
}

这样做是因为当表单以任何方式激活表单获取激活的消息时。当它收到消息时,将运行此代码,强制将窗口设置为前景。希望这会有所帮助。