2017-12-16 10 views
-1

ユーザーインターフェイスなしでアプリケーション(firefox.exeを想定)を実行するサービスを作成したいとします。Cでユーザーインターフェイスのない特定のアプリケーションを実行する

これはタスクマネージャで見ることができますが、ウィンドウは開かれていません。 私はこのコードが、ノー成功をテストして、それがFirefoxのUIを開きます:

var p = new Process 
{ 
    StartInfo = 
    { 
     UseShellExecute = false, 
     FileName = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe", 
     WindowStyle = ProcessWindowStyle.Hidden, 
     CreateNoWindow = true, 
     RedirectStandardInput = true, 
     RedirectStandardOutput = false 
    } 
}; 
p.Start(); 
+0

起動したいプログラムがあなたに許可するまで、これは動作しません。すなわち、プログラムの作成者があなたに許可するコマンド(またはフラグ)を指定しなかった場合、これは機能しません。 – cramopy

+0

_「タスクマネージャで見ることができますが、ウィンドウは開かれていません」ということはあなたが望むものではないのですか? – Lloyd

+0

サービスが実行されると、バックグラウンドでFirefoxが実行され、誰もそのウィンドウを見ることができません。実行中で、タスクマネージャーにリストされています@Lloyd –

答えて

0

私はあなたがのPInvokeを利用し、プロセスのウィンドウを表示/非表示にするShowWindow APIを呼び出すことができますね。

プロセスを作成したら、MainWindowHandleを取得してShowWindowを呼び出してHIDE = 0ウィンドウに、またはSHOW = 5ウィンドウに呼び出します。ここではAPIの

詳細情報:http://www.pinvoke.net/default.aspx/user32.showwindow

使用例ここ:https://www.codeproject.com/Questions/845159/csharp-hide-show-process-window

(注)ShowWindowを使用して、ウィンドウを非表示にした場合、あなたはしませんので、古いWindowHandleを保存する必要がありますことをProcessから入手できます。

希望すると、これが役立ちます。

+0

これは良い答えです。それは時間が必要です。私がcturでそれをするとき、それはリスト1000 msで待っている必要があり、その後それを隠すことができます。より速い方法でそれを行う方法はありますか? –

+0

私はそうは思わない:/ – Haytam

関連する問題