3

ローカル マシンでプロセスを開始する機能があります。

public int StartProcess(string processName, string commandLineArgs = null)
{
    Process process = new Process();
    process.StartInfo.FileName = processName;
    process.StartInfo.Arguments = commandLineArgs;
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.ErrorDialog = false;
    process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    process.Start();
    return process.Id;
}

新しいウィンドウを開かずにプロセスを開始することになっています。実際、timeout.exe でテストすると、コンソール ウィンドウは開かれません。しかし、notepad.exe または calc.exe でテストすると、ウィンドウがまだ開いています。

この方法が他の人にも有効であることをオンラインで見ました. Windows 7 x64 で .NET 4.0 を使用しています。

私は何を間違っていますか?

4

3 に答える 3

2

次のプログラムは、ウィンドウを表示/非表示にします。

using System.Runtime.InteropServices;
class Program
{
    [DllImport("user32.dll")]
    static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

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

    const int SW_HIDE = 0;
    const int SW_SHOW = 5;

    static void Main()
    {
        // The 2nd argument should be the title of window you want to hide.
        IntPtr hWnd = FindWindow(null, "Untitled - Notepad");
        if (hWnd != IntPtr.Zero)
        {
            //ShowWindow(hWnd, SW_SHOW);
            ShowWindow(hWnd, SW_HIDE); // Hide the window
        }
    }
}

ソース: http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/1bc7dee4-bf1a-4c41-802e-b25941e50fd9

于 2012-10-23T06:38:54.917 に答える