• ベストアンサー

Shellで起動したGnuplotを終了させるには

VC++6.0からShellExecuteを使ってwgnuplot.exeと言うフリーのグラフ作成 プログラムを起動させています。 使い終わったらVCから終了させいのですが方法が解りません。 パイプ機能を使うと出来そうなのですが他に簡単な方法はないでしょうか。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

一般的なWindowsアプリケーションなら WM_QUITメッセージを受け取った際にアプリケーションを終了します そのためにはウィンドウハンドルを取得する必要があります タイトルバーの内容が分かっているなら FindWindowやEnumWindowsなどを使ってハンドルを探しましょう ハンドルが取得できたら SendMessageまたはPostMessageでWM_QUITを送ってみてください

yzm250
質問者

お礼

redfox63さん大変解りやすい説明ありがとうございました。 活用させて頂きます。

その他の回答 (1)

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.1

> 簡単な方法はないでしょうか。 簡単な方法と仰るのであれば CreateProcess で起動して TerminateProcess (乱暴な方法)で終了可能かと思われます。

yzm250
質問者

お礼

x415f484fさんありがとうございました。 おかげさまでヒントがつかめました TerminateProcess (乱暴な方法)ではなくExitProcessで試して見ます。 パラメータが多いので大変そうですがチャレンジしてみます。 ところでShellExecuteで起動した場合の終了方法は無いのでしょうか。

関連するQ&A

  • MFCでの終了処理

    MFCでファイルを読み込み、画面表示するプログラムを作成しています。 読込ファイルにいくつかのバージョンがあり、旧バージョンを読み込んだ場合は旧バージョンのexeをShellExecuteで呼び出しています。 旧バージョンのファイルを読み込んだ場合バージョンチェック後旧バージョンのexeを呼び出し、起動中のプログラム(現在のバージョン)を終了しようと思っています。(ダイアログ表示等される前です。) その場合現在動いているプログラムはどのように終了させるべきでしょうか? VC++ではexitを使用しないような事をいくつかのページでみましたが、 exitに代わる方法を教えてください。

  • VC++6.0で複数の外部プログラムを起動 / 終了させる

    現在、VC++6.0でプログラムを起動時にINIファイルに 記述されたパスから複数の外部プログラムを起動して、 プログラムの終了時にその起動したプログラムをすべて 終了させるプログラムを作成しようとしているのですが 良い処理方法が思い浮かびません。 いろいろ調べている内に以下のようなページは見つけ ました。 http://www.asahi-net.or.jp/~yy6m-wd/kuma/vctip/proces.htm#terminate 下の二行をWM_DESTROYで処理させることにより一つの プログラムなら終了させることは出来ました。 これを複数回行う方法はないものでしょうか? (WM_CREATEで複数のプログラムを起動して起動した すべてのプロセスの終了コードを取得する方法) リスト構造体に格納しようとしましたがなぜか強制終了 してしまいます。(^_^; あと、ShellExecute関数のように起動したプログラムを 最前面に表示させないこと(アクティブにさせない)は できませんか? (SW_SHOWNOACTIVATEかSW_SHOWNA) もしかするとSTARTUPINFO 構造体で指定できそうな 感じですが・・・。 よろしくお願いします。

  • 【VC++6.0】外部exeを2つだけ起動させたいのですが・・・

    現在VC++6.0を使用して、外部exeを起動させようとしていますが、 なかなかうまくいきません。 詳しい方いましたら、具体例を踏まえて教えて頂けませんでしょうか?? (本当にお願いします。) (私自身、C言語はなんとなくわかっているつもり(学生レベルの下)  ですが、VC++になって現在更に混乱しています。) (返事はちょっと遅れますが、必ずしますのでお願いします。) ************************************************************** 【やりたいこと(例で紹介します)】 ・ボタンを押して、1つのcalc.exeを立ち上げられるようにします。 ・更にボタンを押せば、calc.exeが2つまで立ち上がることは許可します。(3つ以上はだめ) ・立ち上がっていたcalc.exeが一度終了し、更にボタンを押せば、  クリックの回数分上限2つまでcalc.exeを立ち上げます。 【条件】 ・2つまでcalc.exeが立ち上がっていれば、ボタンを押したことをカウントしないとします。 ・起動もとのVC++のプログラム上の他のボタンは有効とします。 ************************************************************** 私の環境: Windows XP proで、VC++6.0を利用してます。 希望: ・できれば、Shellexecuteを使いたいです。 ・プロセスはあまり・・・(ネットで具体例をみましたが、全く使いこなせませんでした。) 以上、よろしくお願いします。

  • ShellでEXCEL2002を起動する場合

    VB6のコーディングで、Shell関数を使用してEXCELを起動しているのですが、EXCEL2002では、他のバージョンと表示方法が変わってしまいました。 コーディングは Shell(PATHつきのEXCEL.EXE, vbMinimizedFocus) としているのですが、 EXCEL2000までは、正常にアイコン化されたEXCELが起動できていたのに、EXCEL2002からは最後に使用した大きさ(最大化した状態でEXCEL2002を終了していたら最大化、アイコン化した状態で終了していたらアイコン化)で起動されてしまいます。 また、EXCEL2000までは表示されなかったロゴマーク?も表示されてしまいます。 ちなみにWORD2002はアイコン化して起動可能でした。 (但し、こちらもロゴマークは表示されます。) 動作として、ひっそりとEXCELを起動してマクロを使用した帳票を出力する。 としたいのですが、なにかいい方法がありましたら教えてください。 (ShellExeCuteもうまく動作しませんでした。)

  • VCを通して出しか起動できません

    フリー版VC++2005でゲームを作成しています。 VCからF5でデバッグ起動すれば動作するのですが、 EXEファイルを直接起動した場合は即、いつもの「問題が発生したため…」 が表示されて止まります。 この様な場合の対処方法を教えてください。 OSはWindowsXpです。irrlicht 1.1というライブラリを使用していますのでプログラムのかなりの部分がブラックボックスです。 よろしくお願いします。

  • 別アプリを終了する方法

    A.EXE と B.EXEがあったとします。 A.EXEからShellExecuteアプリケーションB.EXEを立ち上げたとします。 その時にA.EXEを終了せずにB.EXEの処理が終わり次第、B.EXEからA.EXEを、 終了させたいのですが、可能でしょうか? いろいろと調べてみたのですが、見当がつきません。 どなかたご教授願えませんでしょうか? ちなみにVC++6.0MFCです。

  • VC++からブラウザを起動して・・・

    VC++&MFCで画面を作成しています。 作成した画面のあるボタンをクリックすると、規定のブラウザが起動され、 指定したURLを表示にいくという処理を行いたいので、 ShellExecute( NULL, "open", "http://xxx.xxx.co.jp/", NULL, NULL, SW_SHOWNORMAL ); という様な感じでブラウザを起動しているのですが、このブラウザの起動時に、 アドレスバー・ツールバー等を非表示にしたいのです。 ShellExecute()じゃなくても良いので、VC++(SDK、MFC何でも可)で 実現する方法はあるのでしょうか?。 よろしくお願いします。

  • JAVAとGnuplot

    javaからGnuplotを起動させ、グラフのプロットを行いたいのですがうまくいきません。 ソースは String gnuplot_cmd = "plot sin(x)" ; try { p = Runtime.getRuntime().exec("C:~省略~\\wgnuplot.exe"); } catch (IOException e) { e.printStackTrace(); } pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(p.getOutputStream()))); pw.print(gnuplot_cmd); pw.close(); です。 起動はするのですが、プロットの命令がうまく伝わりません。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 別アプリ終了させる

    いつもお世話になります。 再度質問ですが、 A.EXEとB.EXEがあり、B.EXEはA.EXEからShellExecuteで起動させています。 起動したB.EXEからA.EXEを終了させたいのですが、それにはA.EXEの ウィンドウハンドルが必要になると思います。 このときにA.EXEのタイトルは動的に変更されるので、FindWindowは使えません。 そこでA.EXEからB.EXEを起動した時にhWNDを送ってやれば、B.EXEからA.EXEを 操作できるとおもいます。 hWNDを対象アプリに送りたいのですが、ShellExecuteやCreateProcessのパラメータにhWndを持たすことはできるのでしょうか? もたせることができそうですが、具体的にどう記述すればいいのかが わからないので、サンプルソースをつけていただければありがたいです。 見当違いであれば、別の方法をご教授ください。 よろしくお願いします。

  • Shell関数で起動したメディアプレーヤーを終了したい。

    以前このコーナーで質問して教えて頂いたShell関数でメディアプレーヤーを起動できました。(以下にそのコーディングを記載しました) 今度は起動したメディアプレーヤーをVBから終了する方法が知りたいのですが教えて頂けませんか。 Shell ("C:\Program Files\Windows Media Player\wmplayer.exe /1 G:\TEST.wma ,vbMinimizedFocus") 宜しくお願いします。

専門家に質問してみよう