3

バックグラウンドでのみ実行される小さなプログラムがあります (ウィンドウはありません)。キーの押下を監視し、特定の要件が満たされると、特定のプログラムを開きます。問題は、プログラムのウィンドウがフォアグラウンドで開かないことです。現在アクティブなウィンドウの後ろに開きます。強制的にフォアグラウンドで開くにはどうすればよいですか?

私は Visual Basic .NET (.NET Framework 4.5) を使用しています。これが現在のコードです。

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

1 に答える 1

5

これを試してください(C#で):このサイトから取得。

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);
        }
    }
}
于 2012-11-10T13:52:04.120 に答える