- ベストアンサー
VC++6.0で複数の外部プログラムを起動 / 終了させる
- VC++6.0でINIファイルに記述された複数の外部プログラムを起動・終了させる方法を知りたい
- WM_DESTROYでプログラムを終了させることはできるが、複数回行う方法はあるか
- 起動した外部プログラムを最前面に表示させずにアクティブにする方法を知りたい
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
PROCESS_INFORMATIONをプロセス毎に用意していればできるはずですが。 >リスト構造体に格納しようとしましたがなぜか強制終了 >してしまいます。(^_^; コードがないのでわかりませんが、ここに間違いがあるのでは? >もしかするとSTARTUPINFO 構造体で指定できそうな >感じですが・・・。 できます。
その他の回答 (1)
- terra5
- ベストアンサー率34% (574/1662)
>#pragma comment(linker, "/entry:\"main\"") 何をやっているのか理解していないなら、むやみにスタートアップを外さないほうがいいでしょう。 これが落ちます。 #include <stdio.h> int main(int argc,char *argv[]){ printf("Hello.\n"); } この場合、標準出力を使えるようにするのがCのライブラリのスタートアップなので、それを外すと未初期化のため落ちます。 わからなければ、Cのライブラリを使っている場合はやめておきましょう。 >よろしければ、サンプルを書いて頂けませんでしょうか? 単に代入するだけですから、これぐらいSTARTUPINFOを調べればすぐわかると思うんですが(^^; http://www.geocities.jp/customcgi/CreateProcess.c.html にこれを追加してください。 a->si.dwFlags = STARTF_USESHOWWINDOW; a->si.wShowWindow = SW_SHOWNOACTIVATE;
お礼
本当にそうですね。 うっかりしていました。 また、STARTUPINFO 構造体に関しては書いた後に過去 ログとか気がついて見てみたら解決してしまいました。 (お礼と補足が二つとも埋まっていたので訂正できず にいました) ただし、何故か非アクティブなのに全面に表示されて しまうなど問題があったため、別の方法(SetForegroundWindow)で 強制的に現在のウィンドウをアクティブに戻すように しました。 お手数かけて済みませんでした。(_ _)
お礼
なんか、 #pragma comment(linker, "/entry:\"main\"") (#pragma comment(linker, "/entry:\"WinMain\"") ) が問題だったようです。 これをコメントアウトしたら動作しました。 スタートアップルーチンで何かCreateProcess用の処理を しているんでしょうか? プログラムサイズを小さくするために最近は殆どのプログラムに 入れていたので失敗しました。(^_^; どうもお騒がせしました。 STARTUPINFO 構造体のサンプルをお待ちしています。(_ _)
補足
えっと、たぶんやり方が悪いだけだと思うんですが正しい 方法が分からないので教えてほしいんです。 http://www.asahi-net.or.jp/~yy6m-wd/kuma/vctip/proces.htm#terminate と http://www.kumei.ne.jp/c_lang/intro/no_34.htm を参考にサンプルソース書きました。 http://www.geocities.jp/customcgi/CreateProcess.c.html すごく初歩的なミスなのではないかと思いますが・・・。 > >もしかするとSTARTUPINFO 構造体で指定できそうな > >感じですが・・・。 > できます。 よろしければ、サンプルを書いて頂けませんでしょうか? または、サンプルのあるページのURLだけでもいいです。