プロが教える店舗&オフィスのセキュリティ対策術

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

アドバイスがありましたら、よろしくお願いします。

A 回答 (3件)

#1様のやりかたが、.Netでは一般的です。


それで出来ないということですが、"アプリケーションパス"の部分を
DOS窓で叩いてみましたか?
あとは、タスクマネージャでプロセスが立ち上がってるかどうかの
確認も必要です。

また、グラフを作るのはgnuplotの方でやるとして、表示させたいGUIというのは
どこなんでしょう?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/22 08:25

回答ありがとうございます。

再び#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つ目のプロパティとして設定してやれば
呼び出したプロセスの保持が出来るのではないかと思います。

この回答への補足

問題が解決したので、報告したいと思います!

シンプルに、
 Process.Start("wgnuplot.exe", "command.gp");
と書けば動きました。とても嬉しいです。これが皆さんの参考にもなったら幸いです。

問題解決の手がかりをくれた回答者の方々、本当にありがとうございました。大変助かりました。重ね重ねお礼申し上げます。

補足日時:2006/07/19 03:50
    • good
    • 0
この回答へのお礼

こんにちは。再度の回答ありがとうございます。

>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つ目のプロパティとして設定するとはどういうことで、どうするのか?といった事が、自分でも調べましたが分かりませんでした。

重ね重ねすみません。とても感謝しています。

お礼日時:2006/07/01 09:01

using System.Diagnostics;


Process.Start("アプリケーションパス");

見当はずれな回答だったらすみませんです。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。大変助かります。

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

また何かアドバイスがありましたら、よろしくお願いします。

お礼日時:2006/06/19 04:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!