0

Serviceの Class Library を使用して、アプリケーションの EXE を実行しています。しかし、私がやろうとしているのは、アプリケーション EXE のウィンドウを非表示にすることです。これが私のコードです:

私のクラスライブラリの機能では: -

public class MyClassLibrary
{
    public void MyFunction()
    {
        Process process = new Process();
        process.StartInfo.FileName = "C:\Program Files (x86)\MyFolder\MyApp.exe";
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
    }
}

そして、これは私がそれを呼び出している場所です:

class MyClass : ServiceBase
{
    ...
    ...
    ...
    protected override void OnStart()
    {
        MyClassLibrary obj = new MyClassLibrary();
        obj.MyFunction();
    }
}

上記のすべてにもかかわらず、ウィンドウはまだ表示されています。誰でも解決策を提案できますか?

よろしくお願いします、シッダント

4

3 に答える 3

0
string filePath = @"C:\Windows\System32\notepad.exe";
ProcessStartInfo pStartInfo = new ProcessStartInfo(filePath);

**pStartInfo.UseShellExecute = true;** 

pStartInfo.WindowStyle = ProcessWindowStyle.Hidden;   
Process.Start(pStartInfo);

注:設定pStartInfo.UseShellExecutetrueないとエラーが発生します

于 2016-05-16T10:06:28.623 に答える
0

この質問の上部にあるArneのコメントから得たこのコメントのおかげで、答えがわかりました。どうやらProcess.StartInfo.UseShellExecuteがtrueに設定されているようです。

助けてくれてありがとう!乾杯!

于 2012-07-13T12:52:08.647 に答える
0

私はあなたのコードを試してみましたが、うまくいきません

しかし、私がこの方法で試してみると、うまくいきます

string filePath = @"C:\Program Files (x86)\Internet Explorer\iexplore.exe";    
ProcessStartInfo pStartInfo = new ProcessStartInfo(filePath );
pStartInfo.WindowStyle = ProcessWindowStyle.Hidden;

Process.Start(startInfo);

Process.Start(ProcessStartInfo) で機能する理由は、 MSDNで説明されているように、指定された情報を新しいコンポーネントに関連付けるためです。

于 2012-07-13T11:43:09.220 に答える