[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/01/17(Mon) 14:50
投稿者名:ももたろう
Eメール:
URL :
タイトル:
SendMessageについて
こんにちは、花ちゃんのHPを参考にEXCELの強制終了PGを作ってみましたがうまくできません。
EXCELを開く個所は長すぎてここには書いてありませんが、複数のファイルを1つずつ編集したり、
閉じたりの処理を繰り返しています。
この処理の中でエラー個所があると思いますが、EXCELが正常に閉じず、プロセスが残っている時が
あります。
PGが長すぎるのとエラーパターンもなく、稀にしか起こらないため、原因がわからない状況です。
そこで、花ちゃんのHPを参考にEXCELが正常終了しなかった場合に強制終了しようと思い、テスト
しているのですが、うまくいきません。
Ret = SendMessage(Hwnd, WM_CLOSE, 0&, 0&)
で、固まってしまい、エラーも何も表示されません。なので、VBを強制終了させています。
単純にEXCEL起動し、下記処理を行うと正常に終了できます。
もうお手上げなので、教えてください。
よろしくお願いします。

-----------------------------------------------------------
無断でコードをコピー&ペーストされ削除をお願いしたのですが
お聞き入れ下されないようなので勝手ながら削除させて頂きました。
--------------------  by 管理人 ---------------------------

投稿時間:2005/01/17(Mon) 16:09
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: SendMessageについて
> そこで、花ちゃんのHPを参考にEXCELが正常終了しなかった場合に強制終了しようと思い、テスト
> しているのですが、うまくいきません。
このプログラムはWindowを閉じているだけなので、強制終了せさるにはプロセスを取得して
強制終了させるようなプログラムを作らないとだめだと思います。
(ちょっとやっかいですが)
それよりも、Excelのプロセスが終了しない原因を直す事をお薦めします。

#PS:当サイトに掲載しているサンプルは、掲示板等へ転載・貼り付けしないように
   お願いします。(リンクや文で書いてもらえば解ります。)

投稿時間:2005/01/17(Mon) 16:18
投稿者名:Say
Eメール:
URL :
タイトル:
Re: SendMessageについて
WM_CLOSEは強制終了メッセージではありません。
正常終了をお願いするメッセージです。

お行儀の良いWindowsアプリの場合、WM_CLOSEを受け取ると、都合がつき次第終了しようとしますが、
都合が悪かったり、お行儀が悪かったりするとすぐに終了するとは限りません。

プロセスの強制終了にはTerminateProcessを使いますが、
プラットフォームSDKに記載されているように、使用には注意が必要です。

しかきながら、そんな付け焼刃の手段を講じるより
残骸が残る原因を究明すべきだと思いますが?

投稿時間:2005/01/17(Mon) 17:21
投稿者名:ももたろう
Eメール:
URL :
タイトル:
Re^2: SendMessageについて
花ちゃん、sayさん返信ありがとうございます。
お二人の指摘通り、終了しない原因追求する方が正論だと思いますが、1度の処理に
15時間程度かかり、またエラーも20回に1回程度なので、そのエラー状況になる時が
なかなかなく、強引だと思いましたが、強制終了してしまおう!になってしまいました。
急ぎの案件ではないので、気長に原因追求していこうと思います。
ありがとうございました。