• ベストアンサー

プロセス間通信

こんにちは。 あるアプリケーションから、別のアプリケーションを起動し、そのアプリが起動したかどうか(起動完了の確認)をとりたいのですが・・・。 CreateProcessで可能なのですか?? また可能であっても不可能であっても、何か別の方法をご存知ないでしょうか?? よろしくお願いします。

  • dole
  • お礼率35% (12/34)

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

  • ベストアンサー
回答No.1

こんにちは。 APIのWaitForInputIdle関数に起動したプロセスのハンドルを渡してください。

関連するQ&A

  • プロセスが実行中かどうか調べる方法

    CreateProcessで作ったプロセスが実行中かどうか調べる方法はありませんか。 標準出力に値を吐き出し続けるコンソールアプリケーションから、値を取得して処理をしたいのですが、CreateProcessでつくってパイプで処理しようとしています。ぐぐったところWaitForSingleObjectで待つようなサンプルは見つかったのですが、呼び出したプロセスが終了しないのでこれは使えないので 実行中はずっとループし続けるような感じにしたいのですが。 よろしくお願いします

  • CreateProcessでwordのプロセスが複数出来ない

    開発環境:VC++2008 / Windows XP / Office2007 指定したOfficeファイルを、プログラムからアプリを指定して開き、 そのファイルが閉じられたら、次の処理を行うというプログラムを 作成中なのですが、 FindExecutableでアプリを検索し、 CreateProcessでアプリを起動。 WaitForSingleObjectで閉じられるまで待機し、 閉じられたら、次処理へ。という流れを マルチスレッドで行っています。 1つ目のwordファイル(a.doc)を開き、 2つ目のwordファイル(b.doc)を開くと、b.docの方は、 WaitForSingleObjectで待機せず、そのまま 次処理へ移行してしまいます。 CreateProcessの戻り値は正常で、b.docファイルも起動するのですが、 プロセス自体は、タスクマネージャで見る限り、1つしかありません。 word.exeが単一プロセスで複数ファイルをコントロールしていると思うのですが、 別プロセスで複数のwordを立ち上げる事は可能なのでしょうか?

  • 通信しているプロセスの特定について

    みなさん、こん○○は ネットワークもしくはWINDOWSに詳しい方にお聞きしたいのですが 自宅にて、パソコン2台でインターネットに繋いでいます。 ここで、A機、B機としますが BはAを経由してつながっています、いわゆる壁です 最近、シマンテックのセキュアソフトをAにインストールしました そして、そのログをみて発覚したのですが メール系のアプリが起動していないのにBから定期的にsmtpサーバへ アクセスがあるのです これが危ないのかどうかは、、、わかりませんけど 実際にパケットを入出しているアプリ、プロセスをBにて 特定する方法はありますか? ご存じの方、宜しくお願いします

  • プロセス監視の方法

    どのたかよい方法をご存知の方いらっしゃいましたら、 助力お願いします。 .NETのアプリケーションで、ある特定のプロセスが起動した時に 処理を実行するアプリを作りたいと思っています。 この場合のあるプロセスとは、Notepadとか、Wordとかです。 無限ループで、プロセスを監視しようと思ったのですが、 メモリの消費が多く重たいので、何かよい方法はないでしょうか? 例えば、ある特定のプロセスが起動したら、 それがトリガーとなるような仕組みとか、可能でしょうか? よろしくお願いします。

  • コンソールアプリの起動結果待ち→WaitForInputIdle??

    こんばんは。 以前にも質問したのですが、CreateProcessで起動させたプログラムの起動を待つために、WaitForInputIdleを使用と教わったのですが、コンソールアプリの起動の場合はWaitForInputIdleは待たずにすぐに結果を返してしまうのです。 WaitForInputIdleと同じようなことができ、かつ、コンソールアプリにも使える方法、ご存知の方がいらっしゃったら、教えてください... よろしくお願いします。

  • CreateProcessでコンソールアプリケーションを起動するには

    コンソールアプリケーションの中で、CreateProcess関数を用いて、自分自身のアプリケーションを起動したところ、次の結果になりました。 ・CreateProcess関数自体は成功する ・タスクマネージャで確認すると自分自身が2つ起動されている ただし、コンソールアプリケーションのウィンドウは1つしか開かず、そのウィンドウを2つのアプリケーションで共有しているかのように動作します(printfによるメッセージが2重に表示されるなど)。 使用言語はVC++ .NET 2008で、デバッガによる動作をさせています。 詳しい方、宜しくお願いします。

  • 子プロセスのデバッグ方法について

    VisualStudio2008のVCでデバッグをしています。 Win32のCreateProcess関数で"自分自身"のEXEファイルを実行すると、新プロセスが起動するのですがデバッグができません。 CreateProcessの呼び出し側プロセスと、同じプログラムである新プロセスを同時にデバッグすることはできないものでしょうか。

  • プロセスが終了されたかどうか調べる関数を教えてください。

    まずは下のC++のソースをご覧ください。 ------------------------------------------------ PROCESS_INFORMATION ProcessInfo; STARTUPINFO StartupInfo = { 0 }; printf ("Start of Proc\n"); CreateProcess ( NULL, "c:\proc01.exe", NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo, &ProcessInfo) printf ("End of Proc\n"); ------------------------------------------------ この処理でCreateProcessで指定された"c:\proc01.exe"が起動されて 終了した時に、下のprintf()関数が実行されるのようにしたいのですが、 そのような処理をするAPI関数、またはC++関数をご存知ないでしょうか?

  • ShellExecuteが起動したプロセスのID

    CreateProcessは起動したプロセスのIDをくれますが、ShellExecuteでは分からないものでしょうか。 ShellExecuteExならプロセスのハンドルを受け取ることはできますが、IDは分かりません。 ハンドルから元のIDを割り出す関数でもないですかね。

  • .NETでのプロセス間通信

    初めまして。皆様の知恵をお借りしたく質問させていただきます。 現在VC++.NET2003を使用してのプロセス間通信を行うアプリを作成しています。 プロジェクトはWindowsフォームアプリケーション(.NET)です。 そのときアドレスをパラメータで送れる通信方法を教えていただきたいのです。 とりあえず自分で調べて出てきた通信方法を挙げます。 1.ソケット(TcpListenerとTcpClientを使用のもの) 2.メッセージキュー(MessageQueueを使用のもの) 3.イベント(CEventを使用。.NETで作成できるか不明) 4.メッセージウインド(.NETで作成できるか不明) 5.パイプ(名前付きパイプを使用のもの。.NETで作成できるか不明) 以上のものはアドレスをパラメータとして送れるものでしょうか? 上記1,2に関してはアドレスを送るのではなく単純なバイナリデータですが .NETを使用して作成出来ました。 が、3,4に関しては作成方法がわからず中断しております。 5に関してはまだ調べたばかりでサンプルも作成していません。 また他にもあるようでしたらお教え下さい。 お願い致します。