• ベストアンサー

.NET で C# を使い、他のソフトウェアを呼び出したい

.NET で C# を使い、他のソフトウェアを呼び出したいのですが、どうしたら良いのでしょうか。具体的には、gnuplot を呼び出してグラフを作り、それをGUIに表示させたいのです。 アドバイスがありましたら、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yotchan2
  • ベストアンサー率61% (8/13)
回答No.2

#1様のやりかたが、.Netでは一般的です。 それで出来ないということですが、"アプリケーションパス"の部分を DOS窓で叩いてみましたか? あとは、タスクマネージャでプロセスが立ち上がってるかどうかの 確認も必要です。 また、グラフを作るのはgnuplotの方でやるとして、表示させたいGUIというのは どこなんでしょう?

komomomo
質問者

お礼

回答ありがとうございます。 DOS窓で叩くということは、パス名の確認をする必要があるという事ですか?パス名はあっているんです。。ただ、一瞬でgnuplotが終了させられてしまうようです。タスクマネージャーでプロセスの確認は、良い方法ですね。今、それをする環境にないのですが、週末にやってみます。 グラフを作るには、gnuplotにコマンドを2回渡す必要があります。一つは、グラフを表示させるコマンド、もう一つはそれを保存させるコマンドです。一回目のコマンドは、#1様のアドバイスで何とかなりそうなのですが、もう一つ目のコマンドはどうやって渡したものでしょうか・・・。もしご存知でしたら、教えて下さい。 表示させたいGUIがどこか、という質問が良く分かりませんでした。そのGUIは、gnuplotを呼び出すGUIです。そしてそこに表示させたいのですが・・・。

その他の回答 (2)

  • yotchan2
  • ベストアンサー率61% (8/13)
回答No.3

回答ありがとうございます。再び#2です。 >DOS窓で叩くということは、パス名の確認をする必要があるという事ですか? そうです。まずは、DOS窓からパスを叩いて、そもそもgnuplotが 呼び出せるのかどうか?の確認が第一だと思います。 >パス名はあっているんです。。 >ただ、一瞬でgnuplotが終了させられてしまうようです。 上記の方法で、まずはこれを確認したいとこですね。 >グラフを作るには、gnuplotにコマンドを2回渡す必要があります。 とのことなので、今回の場合は、ProcessのStaticのStartメソッドではなくて、 実体化したクラスのStartメソッドを使う必要があるかと思います。 ProcessInfo pInfo = new ProcessInfo(); ProcessStartInfo sInfo = new ProcessStartInfo(); Process proc = new Process(); あとは、上2つのクラスを設定し、3つ目のプロパティとして設定してやれば 呼び出したプロセスの保持が出来るのではないかと思います。

komomomo
質問者

お礼

こんにちは。再度の回答ありがとうございます。 >DOS窓からパスを叩いて、そもそもgnuplotが >呼び出せるのかどうか?の確認が第一だと思います。 はい、gnuplotはDOSからは呼び出せます。一番最初にそれは確認しました。タスクマネージャーで確認すれば、というアドバイスですが, 実際、一瞬でDOS窓のような画面が出て消えてしまう、という状況だったため、確認しようがありませんでした。 現在、もし何も因数をgnuplotに渡さなければ、Process.Startを使ってC#からでも呼び出せるようになりました。みなさんの回答をいただいた後に、環境設定を色々いじって変えためでしょうか。 gnuplotの窓にタイプするコマンドを、C#から渡すにはどうしたら良いのか、もう少し詳しく教えてもらえませんか。前までは2回コマンドを渡す必要がある、と書きましたが、gnuplotのコマンドのファイルを作る事により、一回そのファイルをgnuplot に読ませる必要があるだけになりました。一回読ませるコマンドは、 load 'command.gp' です。ネット上で、 Process.Start("パス?wgnuplot.ext", "load 'パス?command'.gp"); の様な文法が記載されていたので、やってみたのですが動きませんでした。コンパイルは出来ますが、反応が全くありませんでした。(パスと書いてあるところは、実際のパスを書き込みました。) 回答して下さった文の最後の段落で、 >上2つのクラスを設定し、3つ目のプロパティとして設定してやれば という文の意味が分かりませんでした。具体的にはどういった事か、もしこの現在私が関わっている問題で、必要があるならば教えて下さい。どういった設定を、上の2つのクラスでするのか?3つ目のプロパティとして設定するとはどういうことで、どうするのか?といった事が、自分でも調べましたが分かりませんでした。 重ね重ねすみません。とても感謝しています。

komomomo
質問者

補足

問題が解決したので、報告したいと思います! シンプルに、  Process.Start("wgnuplot.exe", "command.gp"); と書けば動きました。とても嬉しいです。これが皆さんの参考にもなったら幸いです。 問題解決の手がかりをくれた回答者の方々、本当にありがとうございました。大変助かりました。重ね重ねお礼申し上げます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

using System.Diagnostics; Process.Start("アプリケーションパス"); 見当はずれな回答だったらすみませんです。

komomomo
質問者

お礼

早速の回答ありがとうございます。大変助かります。 色々試してみましたが、実行時にぱっとDOSのような画面が見えますが消え、何も起こりません。おそらくgnuplot はどこかで終了させられているんでしょうか。Process.Startのコマンドをメインにおいてみたりしましたが、同じでした。 また何かアドバイスがありましたら、よろしくお願いします。

関連するQ&A