ウインドウ破棄

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
TISAproject
記事: 62
登録日時: 2016年9月24日(土) 15:35

ウインドウ破棄

#1 投稿記事 by TISAproject »

表示しているウインドウを破棄するプログラムを教えてください
たかせ
記事: 215
登録日時: 2006年2月05日(日) 17:10
お住まい: 東京都

Re: ウインドウ破棄

#2 投稿記事 by たかせ »

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

Re: ウインドウ破棄

#3 投稿記事 by TISAproject »

プログラムで表示しているwindowを消すのです。
たかせ
記事: 215
登録日時: 2006年2月05日(日) 17:10
お住まい: 東京都

Re: ウインドウ破棄

#4 投稿記事 by たかせ »

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

Re: ウインドウ破棄

#5 投稿記事 by TISAproject »

たかせ さんが書きました:③タスクマネージャーの機能と類似した方法
 つまり実行中/表示中のノーマルウインドウ系プログラム(メモ帳、ワード、エクセルなど)を強制終了する機能
ですね
たかせ
記事: 215
登録日時: 2006年2月05日(日) 17:10
お住まい: 東京都

Re: ウインドウ破棄

#6 投稿記事 by たかせ »

表示中のウインドウのハンドルがわかれば以下の方法でできます。
例(これは何らかの方法でウインドウのハンドルの値が判明したとき)
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修正
返信する