![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
アドバイスをお願いします。
Excel-VBAで起動しているエクスプローラに対してハンドルを取得してクリックしたり、テキストボックスに文字をセットするプログラムを作って動かしています。
WindowsXPのときはできていたのですが、Windows7になったら正しく動作しなくなりました。
下のコードはエクスプローラのフォルダパスの右のボタン(添付ファイル参照)をクリックすべく、コーディングしたものです。
最後のSendMessage(hwnd, BM_CLICK, 0, 0) でクリックしたいのですが、その前にボタンのハンドルが取得できません。SDKのInspect Objectsで調べると、このボタンはClass="ToolbarWindow32"でName="前の場所"ですが、NativeWindowHandleが表示されず、Legacy.IAccessible.ChildID=1となっています。
このようなウィンドゥは別のやり方(IAccessible?)でないとクリックできないように感じていますが如何せん知識がありません。
どうしたらできるか、アドバイスよろしくお願いします。
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
ByVal hwndParent As Long, _
ByVal hwndChildAfter As Long, _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, lParam As Any) As Long
Const BM_CLICK = &HF5
Private hwnd As Long
Sub Click_button()
hwnd = FindWindow("CabinetWClass", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "WorkerW", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "ReBarWindow32", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "Address Band Root", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "msctls_progress32", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", vbNullString)
' この次が分からない。
RC = SendMessage(hwnd, BM_CLICK, 0, 0)
end sub
![「windows7のエクスプローラをVBA」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/8/355342239_5497c3d57d92f/M.jpg)
No.1ベストアンサー
- 回答日時:
カテゴリは Visual Basic の方が妥当なんではと。
http://www.ka-net.org/ribbon/ri14.html
ウィンドウを持ってる親の要素から AccessibleObjectFromWindow で IAccessible を取り出して、
http://okwave.jp/c257.html
にある GetAcc 関数で子孫要素を検索すればいいのではと。
で、得られたら accDoDefaultAction でクリック。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wordに貼り付けた写真や図に、...
-
[シャットダウン]ボタンが表示...
-
ワードからパワーポイントのペ...
-
LTspice /.subcktの使い方(zen...
-
「クリックしてヘッダーを追加」
-
急ぎ、サンダーバード 送信ボタ...
-
ウィンドウの開く位置を修正し...
-
Access2016でホームタブしか表...
-
エクセルを開く都度の画面(縮...
-
トップに、Googleのアイコンを...
-
ダイアログボックスが画面の外...
-
win shotの起動について
-
スマホで YouTube のホーム画面...
-
アイコンが2つだけ小さくなって...
-
メモ帳を広げすぎて、画面枠か...
-
Thunderbirdの受信メールがタブ...
-
Excel(エクセル)のハイパーリン...
-
pcの画面がカクカクします。 自...
-
Excel 時間の引き算でマイナス...
-
Yahoo天気を簡単にデスクトップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Wordに貼り付けた写真や図に、...
-
[シャットダウン]ボタンが表示...
-
「クリックしてヘッダーを追加」
-
Windowsのウェブブラウザの左上...
-
スピンボタンが印刷される。
-
LTspice /.subcktの使い方(zen...
-
エクセル2010について
-
ワードからパワーポイントのペ...
-
マイピクチャーの写真にコメン...
-
パソコン デスクトップ壁紙 青...
-
謎の「戻る・進む」のボタンが...
-
ドックのアイコンをファインダ...
-
エクセルのセル内コメントの印刷
-
IMEパッドがなくなりました
-
IME言語バーに辞書ツールや手書...
-
エクスプローラの下の部分を非...
-
度々お世話になります。
-
X Wheel NTでホイールボタンに...
-
コレってなんのエラーなんでし...
-
Nike BasketballのHPが表示され...
おすすめ情報