掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MFCアプリのメッセージボックスのOKボタンをVBアプリからクリックするには? (ID:147755)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
オショウ様、実験が遅くなり申し訳ありません。 BM_CLICKの前のログを取得しました。 ■ボタンのウィンドウハンドル (a)Aアプリをメッセージボックスでエラー表示(クリックできない) (b)AアプリをメッセージダイアログでOKボタンを新しく作成(クリックできる) (a)のログ S WM_GETTEXT cchTextMax:255 lpszText:0012BF68 R WM_GETTEXT cchCopied:2 lpszText:0012BF68 ("") S WM_GETTEXT cchTextMax:255 lpszText:0012BF68 R WM_GETTEXT cchCopied:2 lpszText:0012BF68 ("") S WM_GETTEXT cchTextMax:255 lpszText:0012BF68 R WM_GETTEXT cchCopied:2 lpszText:0012BF68 ("") S WM_GETTEXT cchTextMax:255 lpszText:0012BF68 R WM_GETTEXT cchCopied:2 lpszText:0012BF68 ("") P BM_CLICK S WM_LBUTTONDOWN fwKeys:0000 xPos:0 yPos:0 S WM_GETDLGCODE R WM_GETDLGCODE fuDlgCode:DLGC_UNDEFPUSHBUTTON | DLGC_BUTTON S WM_GETDLGCODE R WM_GETDLGCODE fuDlgCode:DLGC_UNDEFPUSHBUTTON | DLGC_BUTTON S BM_SETSTYLE dwStyle:BS_DEFPUSHBUTTON | BS_TEXT | 0000 | 0000 | 0000 fRedraw:True S WM_STYLECHANGING wStyleType:GWL_EXSTYLE | GWL_STYLE lpss:0012BE74 R WM_STYLECHANGING S WM_STYLECHANGED wStyleType:GWL_EXSTYLE | GWL_STYLE lpss:0012BE74 R WM_STYLECHANGED R BM_SETSTYLE S WM_IME_SETCONTEXT fSet:1 (LONG)iShow:C000000F S WM_IME_NOTIFY dwCommand:00000002 dwData:00000000 R WM_IME_NOTIFY R WM_IME_SETCONTEXT S WM_SETFOCUS hwndLoseFocus:(null) R WM_SETFOCUS S WM_KILLFOCUS hwndGetFocus:00110E88 S BM_SETSTATE fState:False R BM_SETSTATE S WM_CAPTURECHANGED hwndNewCapture:00000000 R WM_CAPTURECHANGED R WM_KILLFOCUS S WM_IME_SETCONTEXT fSet:0 (LONG)iShow:C000000F R WM_IME_SETCONTEXT S WM_IME_SETCONTEXT fSet:1 (LONG)iShow:C000000F R WM_IME_SETCONTEXT S WM_SETFOCUS hwndLoseFocus:00110E88 R WM_SETFOCUS R WM_LBUTTONDOWN S WM_LBUTTONUP fwKeys:0000 xPos:0 yPos:0 R WM_LBUTTONUP P WM_PAINT hdc:00000000 S WM_ERASEBKGND hdc:090110B6 R WM_ERASEBKGND fErased:True S WM_GETTEXTLENGTH R WM_GETTEXTLENGTH cch:2 (b)のログ S WM_GETTEXT cchTextMax:255 lpszText:0012C658 R WM_GETTEXT cchCopied:2 lpszText:0012C658 ("") S WM_GETTEXT cchTextMax:255 lpszText:0012C658 R WM_GETTEXT cchCopied:2 lpszText:0012C658 ("") S WM_GETTEXT cchTextMax:255 lpszText:0012C658 R WM_GETTEXT cchCopied:2 lpszText:0012C658 ("") S WM_GETTEXT cchTextMax:255 lpszText:0012C658 R WM_GETTEXT cchCopied:2 lpszText:0012C658 ("") S WM_GETDLGCODE R WM_GETDLGCODE fuDlgCode:DLGC_UNDEFPUSHBUTTON | DLGC_BUTTON S WM_GETDLGCODE R WM_GETDLGCODE fuDlgCode:DLGC_UNDEFPUSHBUTTON | DLGC_BUTTON S BM_SETSTYLE dwStyle:BS_DEFPUSHBUTTON | BS_TEXT | 0000 | 0000 | 0000 fRedraw:True S WM_STYLECHANGING wStyleType:GWL_EXSTYLE | GWL_STYLE lpss:0012C8A8 R WM_STYLECHANGING S WM_STYLECHANGED wStyleType:GWL_EXSTYLE | GWL_STYLE lpss:0012C8A8 R WM_STYLECHANGED R BM_SETSTYLE S WM_IME_SETCONTEXT fSet:1 (LONG)iShow:C000000F S WM_IME_NOTIFY dwCommand:00000002 dwData:00000000 R WM_IME_NOTIFY R WM_IME_SETCONTEXT S WM_SETFOCUS hwndLoseFocus:(null) R WM_SETFOCUS P BM_CLICK S WM_LBUTTONDOWN fwKeys:0000 xPos:0 yPos:0 S BM_SETSTATE fState:True R BM_SETSTATE R WM_LBUTTONDOWN S WM_LBUTTONUP fwKeys:0000 xPos:0 yPos:0 S BM_SETSTATE fState:False R BM_SETSTATE S WM_CAPTURECHANGED hwndNewCapture:00000000 R WM_CAPTURECHANGED S WM_KILLFOCUS hwndGetFocus:00020E16 R WM_KILLFOCUS S WM_IME_SETCONTEXT fSet:0 (LONG)iShow:C000000F R WM_IME_SETCONTEXT R WM_LBUTTONUP S WM_DESTROY R WM_DESTROY S WM_NCDESTROY R WM_NCDESTROY (b)はBM_CLICKの前にWM_SETFOCUSがあるが、 (a)はBM_CLICKの後にWM_SETFOCUSがありました。 SetForegroundWindow()を呼び出しているのでフォーカスを取れていると 思っていたのですが実際はフォーカスが取れていませんでした。 そこで、SetForegroundWindow()を呼び出した後、GetForegroundWindow()で メッセージボックスにフォーカスが取れているかを確認(※)してから BM_CLICKをポストするとメッセージボックスでもクリックすることが出来ました。(※取れていなければ再度SetForegroundWindow()を呼び出し) ちなみにメッセージボックスのウィンドウハンドルは以下の通りでした。 ■メッセージボックスのウィンドウハンドル (a)のログ 00030E20 S WM_GETTEXT cchTextMax:255 lpszText:0012BF68 00030E20 R WM_GETTEXT cchCopied:7 lpszText:0012BF68 ("") 00030E20 S WM_WINDOWPOSCHANGING lpwp:0012C400 00030E20 R WM_WINDOWPOSCHANGING 00030E20 S WM_WINDOWPOSCHANGED lpwp:0012C400 00030E20 S WM_GETICON fType:True 00030E20 R WM_GETICON hicon:00000000 00030E20 S WM_GETICON fType:False 00030E20 R WM_GETICON hicon:00000000 00030E20 S WM_GETICON fType:True 00030E20 R WM_GETICON hicon:00000000 00030E20 R WM_WINDOWPOSCHANGED 00030E20 S WM_ACTIVATEAPP fActive:True dwThreadID:00000000 00030E20 R WM_ACTIVATEAPP 00030E20 S WM_NCACTIVATE fActive:True 00030E20 S WM_GETICON fType:True 00030E20 R WM_GETICON hicon:00000000 00030E20 S WM_GETICON fType:False 00030E20 R WM_GETICON hicon:00000000 00030E20 S WM_GETICON fType:True 00030E20 R WM_GETICON hicon:00000000 (b)のログ S WM_GETTEXT cchTextMax:255 lpszText:0012C658 R WM_GETTEXT cchCopied:7 lpszText:0012C658 ("") S WM_GETTEXT cchTextMax:255 lpszText:0012C658 R WM_GETTEXT cchCopied:7 lpszText:0012C658 ("") S WM_GETTEXT cchTextMax:255 lpszText:0012C658 R WM_GETTEXT cchCopied:7 lpszText:0012C658 ("") S WM_GETTEXT cchTextMax:255 lpszText:0012C658 R WM_GETTEXT cchCopied:7 lpszText:0012C658 ("") S WM_WINDOWPOSCHANGING lpwp:0012CE80 R WM_WINDOWPOSCHANGING S WM_WINDOWPOSCHANGED lpwp:0012CE80 S WM_GETICON fType:True R WM_GETICON hicon:00000000 S WM_GETICON fType:False R WM_GETICON hicon:00000000 S WM_GETICON fType:True R WM_GETICON hicon:00000000 R WM_WINDOWPOSCHANGED S WM_ACTIVATEAPP fActive:True dwThreadID:00001C7C R WM_ACTIVATEAPP S WM_NCACTIVATE fActive:True S WM_GETICON fType:True R WM_GETICON hicon:00000000 S WM_GETICON fType:False R WM_GETICON hicon:00000000 S WM_GETICON fType:True R WM_GETICON hicon:00000000 WM_ACTIVATEAPPのdwThreadIDが(a)の場合0で送っているのが問題だと思う のですが、なぜそんな風に送っているのかはわかりませんでした。 メッセージボックスの場合はSetForegroundWindow()の1回の呼び出しで フォアグラウンドに切り替わらないのか分からないなどありますが、 クリックできる方法は分かりましたので、解決済みとさせていただきます。 オショウ様ありがとうございました。 魔界の仮面弁士様もアドバイスありがとうございます。 おっしゃっている内容が難しいので実験できていませんが 時間があるときにトライして見ます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.