EnumChildWindows の説明など – プログラミング – Home

通知
すべてクリア

[解決済] EnumChildWindows の説明など


ちちごん
 ちちごん
(@ちちごん)
ゲスト
結合: 24年前
投稿: 2
Topic starter  

お世話になります。下記の件お教え下さい。

1.やりたいこと
他のプログラムから出たメッセージボックス(「はい」「いいえ」)の
「はい」を別プログラムから自動的に押したい。

2.知りたいこと
①メッセージボックスのハンドルを取得するために使う EnumChildWindows の使い方を教えて下さい。
特に 2番目と3番目のパラメータが良くわかりません。CALLBACK とかよくワカンナイです。 (T_T)

②「はい」と「いいえ」ボタンの見分け方
「はい」だけ押したいんです。

どうかよろしくお願いします。


引用未解決
トピックタグ
NGA
 NGA
(@NGA)
ゲスト
結合: 24年前
投稿: 98
 

はい(&Y)のコントロールIDは 0x00000006、いいえ(&N)のコントロールIDは 0x00000007のようですね。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

>①メッセージボックスのハンドルを取得するために使う EnumChildWindows の使い方を教えて下さい。
>特に 2番目と3番目のパラメータが良くわかりません。CALLBACK とかよくワカンナイです。 (T_T)

spy++, FindWindow(), GetWindow()の組み合わせではダメっすか?


返信引用
masa
 masa
(@masa)
ゲスト
結合: 25年前
投稿: 64
 

OS標準のはい、いいえボタンの場合のコントロールIDは、
はい(&Y)のコントロールIDは 0x00000006、いいえ(&N)のコントロールIDは 0x00000007
かもしれませんが、アプリケーションによっては、はい、いいえボタンを自前で作って
いるものもあるかもしれませんので、コントロールIDで識別するのは危険かもしれませんね。
マウスカーソルが、フォーカスを持ったボタンに自動的に移動するアプリケーションがあるので
そのようにすればできるかもしれませんね。どんなメッセージも「はい」を自動的に押すと
言うのは、アプリケーションの仕様としてもあまりにも無謀だと思うのですが。
通常のメッセージはデフォルトで、はい、いいえどちらかのボタンにフォーカスを設定して
いると思いますので、フォーカスを持っているボタンを選択するほうがよいと思います。
でも、アプリケーションによってはそこまで考慮して作られていないものも多いので
危険ですが。まとまりの無い回答になってしまいますが、私の考えとしては、別のアプリケーション
から出されたメッセージをユーザーの意思に反して勝手に選択するのは止めたほうがよいと
思いますよ。
それとも別の使い方を考えているのですか?


返信引用
NGA
 NGA
(@NGA)
ゲスト
結合: 24年前
投稿: 98
 

とりあえずですが、OS標準の「はい」押下を作ってみました。

BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
HWND hChildWnd;

if(hChildWnd = GetDlgItem(hWnd, lParam))
{
PostMessage(hChildWnd, WM_KEYDOWN, VK_RETURN, 0);
}

return TRUE;
}

CloseMsgBox()
{
EnumWindows(EnumWindowsProc, 0x00000006);
}


返信引用
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

>①メッセージボックスのハンドルを取得するために使う EnumChildWindows の使い方を教えて下さい。
>特に 2番目と3番目のパラメータが良くわかりません。CALLBACK とかよくワカンナイです。 (T_T)

分からないと言われても...。
とりあえずgoogleなどでEnumChildWindowsを検索すれば解説やサンプルソースは見つかると思いますけど。


返信引用
ちちごん
 ちちごん
(@ちちごん)
ゲスト
結合: 24年前
投稿: 2
Topic starter  

質問者のちちごんです。

NGA さんのシンプルなソースを見て概ね理解でき、
自分のプログラムの中で利用することができました。

ほんとに助かりました。
NGA さん丁寧な書き込みありがとうございました。m(_ _)m

その他にも書き込み下さった masa さん bun さん
ほんとうにありがとうございました。


返信引用
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

私の名前はなしですか...。
まあ、たまたま忘れただけだと信じていますが。

ちなみに、0x00000006 = IDYESです。
私もmasaさんの意見と同じで、無条件に「はい」を選択するというのは危険で、せめてフォーカスがあるボタンを選択するなど考えた方がいいのでは。
どのようなアプリケーションを対象にしているのか分からないのでなんとも言えませんけど。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました