アドバイスをお願いします。
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
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wordに貼り付けた写真や図に、...
-
[シャットダウン]ボタンが表示...
-
Windowsのウェブブラウザの左上...
-
IE7の戻るボタンを三回押さない...
-
フォルダーのアイコンが勝手に...
-
急ぎ、サンダーバード 送信ボタ...
-
ウィンドウの開く位置を修正し...
-
エクセルを開く都度の画面(縮...
-
Access2016でホームタブしか表...
-
ディスクトップの下のバーが表...
-
IEでお気に入りバーが表示さ...
-
フォルダアイコン 2人の人
-
アイコンが2つだけ小さくなって...
-
アクセスのメニューバーが消え...
-
アウトルックを「タスクバー」...
-
Linux Ubuntu22.4の起動時エラ...
-
デスクトップアイコンの枠消したい
-
エクセルのアドインタブはどの...
-
トップに、Googleのアイコンを...
-
Windows10 ポップアップ画面を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Wordに貼り付けた写真や図に、...
-
[シャットダウン]ボタンが表示...
-
アイコンってどうやって変えら...
-
「クリックしてヘッダーを追加」
-
スピンボタンが印刷される。
-
Windowsのウェブブラウザの左上...
-
マイピクチャーの写真にコメン...
-
謎の「戻る・進む」のボタンが...
-
ナビゲーションウィンドウで表...
-
LTspice /.subcktの使い方(zen...
-
パソコン デスクトップ壁紙 青...
-
エクセルのセル内コメントの印刷
-
Win7 64bitで、窓一つ上の...
-
エクセル2010について
-
X Wheel NTでホイールボタンに...
-
Wordで市販の原稿用紙に印刷
-
IME2000 ツールバーを最前列に...
-
エクセル 別ファイル内の特定...
-
かんじへんかんできません・・・
-
IMEパッドがなくなりました
おすすめ情報