ab.com コミュニティ
https://www.activebasic.com/forum/

ウインドウ破棄
https://www.activebasic.com/forum/viewtopic.php?t=4605
ページ 11

作成者:  TISAproject [ 2016年11月10日(木) 17:37 ]
記事の件名:  ウインドウ破棄

表示しているウインドウを破棄するプログラムを教えてください

作成者:  たかせ [ 2016年11月13日(日) 21:44 ]
記事の件名:  Re: ウインドウ破棄

「表示しているウインドウを破棄する」についていまいちよくわかりません。
例えばメモ帳(NOTEPAD.EXE)が実行されているときにABなど自作のプログラムでメモ帳を強制終了させることでしょうか?
タスクマネージャーで強制終了させる機能と類似したことを実現したいのでしょうか?

作成者:  TISAproject [ 2016年11月14日(月) 22:50 ]
記事の件名:  Re: ウインドウ破棄

プログラムで表示しているwindowを消すのです。

作成者:  たかせ [ 2016年11月15日(火) 00:37 ]
記事の件名:  Re: ウインドウ破棄

引用:
プログラムで表示しているwindowを消すのです。
もう一度確認したいのですが
①ノーマルウインドウのプログラムを起動して表示中にそれを破棄(プログラム終了)する方法
②ダイアログボックスがあるノーマルウインドウのプログラムを起動して実行中に表示中のダイアログボックスのウインドウを破棄する方法
③タスクマネージャーの機能と類似した方法
 つまり実行中/表示中のノーマルウインドウ系プログラム(メモ帳、ワード、エクセルなど)を強制終了する機能
どちらでしょうか?

作成者:  TISAproject [ 2016年11月15日(火) 16:40 ]
記事の件名:  Re: ウインドウ破棄

引用:
③タスクマネージャーの機能と類似した方法
 つまり実行中/表示中のノーマルウインドウ系プログラム(メモ帳、ワード、エクセルなど)を強制終了する機能
ですね

作成者:  たかせ [ 2016年11月17日(木) 22:41 ]
記事の件名:  Re: ウインドウ破棄

表示中のウインドウのハンドルがわかれば以下の方法でできます。
例(これは何らかの方法でウインドウのハンドルの値が判明したとき)
DIM HWNHND AS HANDLE
HWNHND = &h0016075a AS HANDLE 'ウインドウのハンドルを設定
SendMessage(HWNHND,WM_CLOSE,0,0) 'ウインドウの閉じるボタンを押されたことを通知

ウインドウのハンドルはウインドウクラスまたはウインドウタイトルを基にWIN32 API FindWindowで取得します。
なおウインドウクラスがわからなくてもウインドウタイトルのみでも取得できます。というか私はそうしてます。
FindWindowについてはABのヘルプに載ってますので詳細はこちらをご確認下さい。

私自身あまりよく理解できていませんが、
WM_CLOSEメッセージはウインドウの閉じるボタンを押されたことを通知するもので強制的に終了するものではありません。
しかしながらプログラムの作りに依存しますが、WM_CLOSEメッセージを対象のウインドウに送ると基本的にウインドウ系のプログラムは終了します。
2017.10.31修正

ページ 11 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/