从后台程序打开前景程序

时间:2012-11-10 13:34:03

标签: windows vb.net visual-studio-2012

我有一个只在后台运行的小程序(没有任何窗口)。它监控按键,当满足某些要求时,它会打开特定的程序。问题是程序的窗口没有在前台打开 - 它在当前活动窗口后面打开。如何强制它在前台打开?

我正在使用Visual Basic .NET(.NET framework 4.5),这是我当前的代码:

Dim temp As New Process
temp = Process.Start("C:\cygwin\bin\mintty.exe", "-")
temp.WaitForInputIdle(10000)

1 个答案:

答案 0 :(得分:5)

试试这个(它在C#中):取自this site

internal class Program
{
    [DllImport("user32.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool SetWindowPos(IntPtr hWnd,
        int hWndInsertAfter, int x, int y, int cx, int cy, int uFlags);

    private const int HWND_TOPMOST = -1;
    private const int SWP_NOMOVE = 0x0002;
    private const int SWP_NOSIZE = 0x0001;

    public static void Main()
    {
        Process process = Process.Start(@"notepad.exe", "");

        if (null != process)
        {
            SetWindowPos(process.MainWindowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
        }
    }
}