🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fj.lang.visualbasic
5 messages
5 total messages Started by Ken Nankou Tue, 10 Feb 1998 00:00
shell()関数で起動したプロセスについて。
#715
Author: Ken Nankou
Date: Tue, 10 Feb 1998 00:00
16 lines
1106 bytes
  記事を開いて頂いて有り難うございます。
  どなたか以下の件についてご教示頂ければ
  幸いです。

  いま作成中のアプリケーションの中でShell()関数
  を使用して別のアプリケーションを起動しているの
  ですが、その起動したアプリケーションを、Shell()
  関数を実行したアプリケーション側から途中で停止
  するには、どのようにすればいいのでしょうか?

  ヘルプを見てもどのような関数を使うのかなど、上手
  く引き当てられませんでした。

  ちなみに、Visual Basic Ver5.0 です。
  どうかよろしくお願い致します。
Re: shell()関数で起動したプロセスについて。
#718
Author: 浅井義孝
Date: Wed, 11 Feb 1998 00:00
40 lines
2172 bytes
浅井と申します。


Ken Nankou <nankoken@mbox.kyoto-inet.or.jp> wrote in article
<6bpt4u$iv4$1@news.kyoto-inet.or.jp>...
>   記事を開いて頂いて有り難うございます。
>   どなたか以下の件についてご教示頂ければ
>   幸いです。
> 
>   いま作成中のアプリケーションの中でShell()関数
>   を使用して別のアプリケーションを起動しているの
>   ですが、その起動したアプリケーションを、Shell()
>   関数を実行したアプリケーション側から途中で停止
>   するには、どのようにすればいいのでしょうか?
> 
>   ヘルプを見てもどのような関数を使うのかなど、上手
>   く引き当てられませんでした。
> 
>   ちなみに、Visual Basic Ver5.0 です。
>   どうかよろしくお願い致します。
> 

これはShell()関数を使用せずWIN32APIの
CreateProcess()等を使用してアプリケーションを
起動すれば起動したアプリケーションのプロセスハン
ドル等を取得できます。プロセスハンドルが取得でき
れば同じくAPIのTerminateProcess()を使用して
アプリケーションを強制終了させることができます。
でも、この方法だと強制終了される側のアプリケー
ションの動作(データの保持等)が全然保証されない
のでお互いのアプリケーションでイベント等のやり取
りをさせるような仕組みを作って終了は自分自身で
行なわせた方が安全ですよ。

以上

************************************
浅井義孝
************************************
Re: shell() 関数で起動したプロセスについて。
#721
Author: Sato Masahiro
Date: Wed, 11 Feb 1998 00:00
29 lines
1917 bytes
In article <01bd3683$689d5900$7d40a8c0@yumiyo.syseng.toyotamacs.co.jp>, 浅井義孝 wrote:
>これはShell()関数を使用せずWIN32APIの
>CreateProcess()等を使用してアプリケーションを
>起動すれば起動したアプリケーションのプロセスハン
>ドル等を取得できます。

Shell関数の戻り値を利用して、Win32 API の OpenProcess 関数を
呼んでも、プロセスハンドルを取得できますね。どちらも、
同じようなものですが...。

>れば同じくAPIのTerminateProcess()を使用して
>アプリケーションを強制終了させることができます。
>でも、この方法だと強制終了される側のアプリケー
>ションの動作(データの保持等)が全然保証されない
>のでお互いのアプリケーションでイベント等のやり取
>りをさせるような仕組みを作って終了は自分自身で
>行なわせた方が安全ですよ。

ちょうど、fj.os.ms-windows.programming にて、他の
アプリケーションを終了させる方法が話題に挙がっていました。
以下の記事に続くスレッドが参考になるかもしれません。

Message-ID: <6boadq$4r4@sc6.osa.sharp.co.jp>
Subject: プロセス ID から Windowハンドルを得る方法を教えてください。

-- 
Computer Institute of Japan, Ltd.
佐藤正宏 masahiro@cij.co.jp
Re: shell()関数で起動したプロセスについて。
#643
Author: Ken Nankou
Date: Sun, 15 Feb 1998 00:00
14 lines
1164 bytes

レスポンス有り難うございます。

現状としてはCreateProcess&TerminateProcessで実現しました。
しかし、TerminateProcessの説明には、メモリリークが発生する
可能性があるので注意と書かれていましたが、それって汎用機などの
OSからみると結構いいかげんですね。
ま、それがPC,それがWindows(Microsoft)ってことでしょうか?

また、それを前提としてメモリリークを発生させないように、あるいは
発生しても最小限にするにはどのようなことに気を付ければいいのでしょうか?

質問の質問で申し訳有りませんが宜しくお願いします。
Re: shell()関数で起動したプロセスについて。
#655
Author: よろずや kin-chan
Date: Mon, 16 Feb 1998 00:00
23 lines
1651 bytes
こんにちは よろずや kin-chan です

Ken Nankou <nankoken@mbox.kyoto-inet.or.jp> wrote in article
<6c6upf$n2i$1@news.kyoto-inet.or.jp>...
> 
> レスポンス有り難うございます。
> 
> 現状としてはCreateProcess&TerminateProcessで実現しました。
> しかし、TerminateProcessの説明には、メモリリークが発生する
> 可能性があるので注意と書かれていましたが、それって汎用機などの
> OSからみると結構いいかげんですね。
> ま、それがPC,それがWindows(Microsoft)ってことでしょうか?
> 
> また、それを前提としてメモリリークを発生させないように、あるいは
> 発生しても最小限にするにはどのようなことに気を付ければいいのでしょうか?

手元の本にはメモリリークの事は書いてありませんが、「動作するが避けた
方がよい」とあります。
また、「アプリケーションをクローズするためには、アプリケーションのメイン
ウィンドウにメッセージWM_CLOSEを送る。」とあります。

では
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads