
IEをvb.netから操作しています。
webからファイルのダウンロードを自動で行いたいのですが、どのようにすればいいのかわからず悩んでいます。
画像の赤枠で括ってあるボタンの押下を、vb.netからの操作で行いたいのですが、どのようにすれば良いでしょうか。
InternetExplorer.Applicationに何らかのメンバ関数のようなものがあるのか、sendkeysを使うしかないのか、sendkeysを使うなら、具体的にどのキー操作を送れば良いのかなど、お教えいただけないでしょうか。
よろしくお願いします!

No.2ベストアンサー
- 回答日時:
Windows7 IE9ですが、↓で動きました
Private Delegate Function D_EnumChildWindowsProc(ByVal hWnd As IntPtr, ByVal lParam As IntPtr) As IntPtr
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As IntPtr, ByVal hWnd2 As IntPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As IntPtr
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As IntPtr, ByVal wParam As IntPtr, ByVal lParam As String) As IntPtr
Private Const WM_ACTIVATE = &H6
Private Const BM_CLICK = &HF5
Private Const WM_GETTEXT = &HD
Private Const WM_QUIT = &H10
Private Const NAVDIR_NEXT = &H5
Private Const NAVDIR_FIRSTCHILD = &H7
Private Const CHILDID_SELF = &H0
Private Const OBJID_CLIENT = &HFFFFFFFC
Private Declare Function AccessibleObjectFromWindow Lib "oleacc" _
(ByVal hWnd As IntPtr, ByVal dwId As IntPtr, _
ByRef riid As Guid, <MarshalAs(UnmanagedType.IUnknown)> ByRef ppvObject As Object) As IntPtr
Declare Function AccessibleChildren Lib "oleacc" _
(ByVal paccContainer As IAccessible, ByVal iChildStart As IntPtr,
ByVal cChildren As IntPtr, <[Out]()> ByVal rgvarChildren() As Object, ByRef pcObtained As IntPtr) As IntPtr
Private IID_IAccessible As Guid = New Guid(&H20400, 0, 0, {&HC0, 0, 0, 0, 0, 0, 0, &H46})
Sub FileDownLoad_Proc()
Dim strCaption As String
Dim PWnd As IntPtr
Dim cWnd As IntPtr
' 親ウィンドウ取得
strCaption = "○○○○ - Windows Internet Explorer"
While PWnd = 0
PWnd = FindWindowEx(0, 0, "IEFrame", strCaption)
System.Threading.Thread.Sleep(50)
End While
' 通知バーのハンドル
While cWnd = 0
cWnd = FindWindowEx(PWnd, 0&, "Frame Notification Bar", vbNullString)
System.Threading.Thread.Sleep(50)
End While
' 通知バーボタン群のハンドル
Dim hChild As IntPtr = FindWindowEx(cWnd, 0&, "DirectUIHWND", vbNullString)
Dim objAcc As IAccessible = Nothing
AccessibleObjectFromWindow(hChild, OBJID_CLIENT, IID_IAccessible, objAcc)
If Not IsNothing(objAcc) Then
ClickPreserve(objAcc)
While cWnd = 0
cWnd = FindWindowEx(PWnd, 0&, "Frame Notification Bar", vbNullString)
System.Threading.Thread.Sleep(50)
End While
SendMessage(cWnd, WM_QUIT, 0, 0&)
End If
End Sub
Private Sub ClickPreserve(ByVal acc As IAccessible)
Dim i As Long
Dim count = acc.accChildCount
Dim lst(count - 1) As Object
If count > 0 Then
AccessibleChildren(acc, 0, count, lst, 0)
If Not IsNothing(lst) Then
For i = LBound(lst) To UBound(lst)
With lst(i)
'On Error Resume Next
'Debug.Print("ChildCount: " & .accChildCount)
'Debug.Print("Value: " & .accValue(CHILDID_SELF))
'Debug.Print("Name: " & .accName(CHILDID_SELF))
'Debug.Print("Description: " & .accDescription(CHILDID_SELF))
'On Error GoTo 0
'保存ボタンを見つけたらクリック(デフォルトアクション)する
If .accName(CHILDID_SELF) = "保存" Then
System.Threading.Thread.Sleep(500)
.accDoDefaultAction(CHILDID_SELF)
System.Threading.Thread.Sleep(500)
End If
End With
ClickPreserve(lst(i)) '再帰
Next
End If
End If
End Sub
ぬおーー!!ありがとうございます!
ちょっと私には難解な感じですが、とりあえず頑張って読み解いてみます。
ありがとうございました!
No.1
- 回答日時:
それね、なかなか簡単に押せないんだよー。
俺も自動的にダウンロードするアプリを仕事で作ることになったんだけどVBAで簡単に作ろうと思ったらそこで引っかかった。
諦めてWebClient使って直接ファイルをダウンロードすることにしたよ。
参考になるかわからないけど過去に同じような質問あったよ。
http://oshiete.goo.ne.jp/qa/1809850.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 ファイルエクスプローラーでフォルダを閉じる操作について 2 2022/10/15 11:06
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- Chrome(クローム) Google Chrome Portable 2 2023/03/08 08:34
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- Windows 10 Windows10でボリュームのアップダウンを簡単にできる方法ないですか? 1 2023/06/20 13:06
- 国産車 ホンダ ハイブリッド車について ブレーキペダルを踏まずに、POWERボタンを2回押すと、どのようなモ 2 2022/10/08 18:44
- Visual Basic(VBA) Edge操作のアプリが例外発生に 1 2023/03/12 21:22
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- iPhone(アイフォーン) iphoneで撮影した写真、動画を連番のファイル名で保存したい。 1 2022/04/28 02:12
- 中国語 新しいMS-Windows OSの度に多大な出費 自作PCでLinuxOS・挑戦したい新OS 1 2022/07/05 14:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
log4net書庫が壊れている
-
Webサイトのバイナリーファイル...
-
音楽ソフトMeRuのCDDA Readerの...
-
日本語名ファイルのDL時の文...
-
エアーマンが倒せないのtab譜
-
【HTML】1クリックで複数ファイ...
-
ダウンロードリンクを作成する...
-
bcpadのコンパイラのインストー...
-
拡張子 swf のファイルをダウ...
-
HTMLページが勝手にダウンロー...
-
メルカリで講義資料を購入しま...
-
ZIPの拡張子のついたURLがダウ...
-
java_run.batがダウンロードで...
-
見れる方・・
-
VB6.0[ htmlのプレビュー]
-
HTMLに詳しい方に質問です
-
教えてくださーい
-
PDFファイルへのリンクについて
-
HTMLでPerlみたいに計算は出来...
-
「iframe内ページ」の「ページ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Webサイトから、txtファイルを...
-
【HTML】1クリックで複数ファイ...
-
HTMLページが勝手にダウンロー...
-
java_run.batがダウンロードで...
-
VBA URLDownloadToFileについて
-
URLDownloadToFile でダウンロ...
-
Excelのマクロについて教えてく...
-
XMLファイルのダウンロード
-
ZIPの拡張子のついたURLがダウ...
-
ダウンロードのさせ方は??
-
VC++でHTTPプロトコルを用いた...
-
WEB上でPDF閲覧のみにしたいです。
-
エクセルのファイルのダウンロ...
-
CGIファイルの開き方
-
ディレクトリを『ダウンロード...
-
ファイルをダウンロードすると...
-
イラストレーターのaiファイル...
-
CSVファイルをサーバからクライ...
-
Web上のデータをネスケでダウン...
-
VBAでIEのファイルを自動的にダ...
おすすめ情報