![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
IEをvb.netから操作しています。
webからファイルのダウンロードを自動で行いたいのですが、どのようにすればいいのかわからず悩んでいます。
画像の赤枠で括ってあるボタンの押下を、vb.netからの操作で行いたいのですが、どのようにすれば良いでしょうか。
InternetExplorer.Applicationに何らかのメンバ関数のようなものがあるのか、sendkeysを使うしかないのか、sendkeysを使うなら、具体的にどのキー操作を送れば良いのかなど、お教えいただけないでしょうか。
よろしくお願いします!
![「IE操作時、ファイルのダウンロードボタン」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/5/260986_5497c4942e978/M.jpg)
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も見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
VBA IE通知バーの制御 バー内のボタン 開く/保存/キャンセルを押す
Visual Basic(VBA)
-
VBA IE操作でダイアログ表示後、ファイルを開くボタンが押下できない
Visual Basic(VBA)
-
ダウンロードダイアログをVBAから操作するには?
Visual Basic(VBA)
-
-
4
vbaでIEの名前を付けて保存(A)をしたい
Microsoft ASP
-
5
VBA IE ダウンロード ダイアログ制御(名前を付けて保存)
Visual Basic(VBA)
-
6
IEのダウンロード通知バーのVBA制御(保存他)
Visual Basic(VBA)
-
7
Alt+P,Alt+NをPostmessageで送るには
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Webサイトから、txtファイルを...
-
VBA URLDownloadToFileについて
-
ファイルをダウンロードすると...
-
【HTML】1クリックで複数ファイ...
-
IE操作時、ファイルのダウンロ...
-
CSVダウンロードができない
-
ZIPの拡張子のついたURLがダウ...
-
java_run.batがダウンロードで...
-
ASPでPDFファイルのサム...
-
HTMLでpdfファイルをリンク...
-
WebサーバにExcelファイルを置くと
-
WebBrowser でダイアログを自動...
-
画像ファイルのダウンロードで...
-
ダウンロード完了後メッセージ...
-
エクセルのファイルのダウンロ...
-
音楽をずらして鳴らしたい
-
自分で作成した音楽ファイルを...
-
カウンターについて
-
バックアップをとっていなかった為
-
Excelで、社外秘(閲覧のみ)と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ホームページでファイルをダウ...
-
HTMLページが勝手にダウンロー...
-
Webサイトから、txtファイルを...
-
java_run.batがダウンロードで...
-
VBA URLDownloadToFileについて
-
【HTML】1クリックで複数ファイ...
-
URLDownloadToFile でダウンロ...
-
IE操作時、ファイルのダウンロ...
-
XMLファイルのダウンロード
-
ファイルをダウンロードすると...
-
VBA IE操作でダイアログ表示後...
-
エクセルのファイルのダウンロ...
-
Excelのマクロについて教えてく...
-
選択した複数のファイルを、一...
-
ZIPの拡張子のついたURLがダウ...
-
rdfファイルをブラウザで表示さ...
-
iPhoneです。 Adobeフラッシュ...
-
リッチテキスト入力した内容(ti...
-
イラストレーターのaiファイル...
-
VC++でのZIPファイル解凍方法を...
おすすめ情報