COMポートのクローズするには?

解決


HANA  2006-04-03 19:34:43  No: 61117  IP: 192.*.*.*

HANAと申します。

COMポートをCreateFile()を用いてオープンする際に、
既に別のアプリケーションによってオープンされていてエラーに
なってしまいます。通常クローズする際にCloseHandle()を使用して
クローズすれば良いと思うのですが、
別のアプリケーションでオープンされたポートをクローズする方法には
どうすれば良いのでしょうか?

宜しくお願い致します。

編集 削除
REE  2006-04-03 21:52:06  No: 61118  IP: 192.*.*.*

そのアプリケーションでCloseHandleで閉じます。
無理やり閉じたい場合は、そのアプリケーションを終了させます。

編集 削除
HANA  2006-04-04 09:00:24  No: 61119  IP: 192.*.*.*

REEさん、ありがとうございます。

度々、聞いて申し訳ないですが、
アプリケーションから、別のアプリケーションを
無理やり閉じる場合はどのような処理をすれば良いでしょうか?

宜しくお願い致します。

編集 削除
Ban  2006-04-04 09:25:50  No: 61120  IP: 192.*.*.*

原則として、別のアプリケーションの方で閉じる操作をする/してもらうか、
終了操作をする/してもらうということになります。

# ユーザに無断で、勝手に動作中の別アプリを終了させるようなことは、
# 通常、したらまずいと考えられます。無理やり作業中断とかされたら
# 怒るでしょう。

その上で、どうしても外からということであれば、
・コンソールならシグナルを送りつける。
・ウィンドウなら WM_CLOSE を送りつける。
等を試みてみるとか。

あくまで、別アプリ自体に閉じてもらうのが基本です。
そのアプリの終了確認などのプロセスを経ることは重要。
# 安易に外から強制終了とかすると、そのアプリのデータ保存とか
# できなくなりますし、大損害を与える可能性も…。
# TerminateProcess 等の使用は、お勧めできません。

編集 削除
HANA  2006-04-04 09:51:22  No: 61121  IP: 192.*.*.*

Banさん、ありがとうございます。

そうですね。
あまり無理やり閉じるのは、好ましくは無いですね。
別アプリ自体で終了する方法を考えてみます。

ありがとうございました。

編集 削除