3

Windows サービスに引数を渡す方法を知りたいだけです。問題は、私は Windows アプリケーションを開発し、それを Onstart() メソッドから呼び出すことです。今、別のプロジェクトから特定の関数を呼び出したいと思います。

 protected override void OnStart(string[] args)
        {

            Process.Start("C:\\Program Files\\macro.exe");

        }

引数を使用して、macro.exe プロジェクト内の関数を呼び出したいです。助言がありますか

4

2 に答える 2

2

サービスに渡された引数を使用したい場合は、次を試すことができます。

Process.Start(@"C:\Program Files\macro.exe", String.Join(" ", args))

@Tudor の回答を使用すると、開始されたプロセスをより適切に制御したり、入力/出力/エラーをリダイレクトしたり、ウィンドウを表示/非表示にしたり、その他多くの優れた機能を使用できることに注意してください。

于 2012-04-12T10:59:27.237 に答える
0

別のEXE内で関数を呼び出すことができるのだろうか。共通の DLL を作成し、それを macro.exe と独自のアプリケーションで参照できる場合があります。それが選択できない場合は、ソケットまたはファイル システムを使用して EXE と通信できます。たとえば。上記の前のコメントに示されているように、EXE 2 コマンド ライン引数「MyFunction」、「Hello」を渡すと、Exe はこれらの引数を取得し、MyFunction を引数 Hello で呼び出す必要があると推測し、結果を取得するために、EXE はそれを事前定義されたファイルに書き込みます。 path をファイルから読み取ります。

Exe が実行中で、コマンド ラインを渡すことができない場合、Exe が入力ファイルをスキャンし続けて、アプリなどの外部ソースからコマンドを取得している可能性があります。または、さらに良いのは、コマンドを発行するポートでリッスンすることです。

別のより率直な解決策があるかどうかはわかりません。

于 2012-04-12T11:25:53.633 に答える