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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
VBA IE通知バーの制御 バー内のボタン 開く/保存/キャンセルを押す
Visual Basic(VBA)
-
VBA IE操作でダイアログ表示後、ファイルを開くボタンが押下できない
Visual Basic(VBA)
-
ダウンロードダイアログをVBAから操作するには?
Visual Basic(VBA)
-
-
4
VBA IE ダウンロード ダイアログ制御(名前を付けて保存)
Visual Basic(VBA)
-
5
vbaでIEの名前を付けて保存(A)をしたい
Microsoft ASP
-
6
VBAでIEの「ファイルのダウンロード」ダイアログを制御
Visual Basic(VBA)
-
7
IEのダウンロード通知バーのVBA制御(保存他)
Visual Basic(VBA)
-
8
Alt+P,Alt+NをPostmessageで送るには
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Webサイトから、txtファイルを...
-
HTMLページが勝手にダウンロー...
-
VBA URLDownloadToFileについて
-
URLDownloadToFile でダウンロ...
-
【HTML】1クリックで複数ファイ...
-
Excelのマクロについて教えてく...
-
イラストレーターのaiファイル...
-
ホームページでファイルをダウ...
-
メールの直リンクがダウンロー...
-
大量画像の送信
-
会員制ホームページの作り方。
-
ZIPの拡張子のついたURLがダウ...
-
VBA IE操作でダイアログ表示後...
-
bcpadのコンパイラのインストー...
-
pdfへのリンククリックで、ダウ...
-
rdfファイルをブラウザで表示さ...
-
ファイルをダウンロードすると...
-
JSP/Servlet DBからデータを読...
-
ホームページビルダー Ver9にWo...
-
Excelで、社外秘(閲覧のみ)と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Webサイトから、txtファイルを...
-
HTMLページが勝手にダウンロー...
-
【HTML】1クリックで複数ファイ...
-
VBA URLDownloadToFileについて
-
URLDownloadToFile でダウンロ...
-
java_run.batがダウンロードで...
-
ホームページでファイルをダウ...
-
Excelのマクロについて教えてく...
-
WEB上でPDF閲覧のみにしたいです。
-
ZIPの拡張子のついたURLがダウ...
-
複数のデータをダウンロードさ...
-
ファイルをダウンロードすると...
-
VBA IE操作でダイアログ表示後...
-
XMLファイルのダウンロード
-
iPhoneです。 Adobeフラッシュ...
-
イラストレーターのaiファイル...
-
ダウンロードサイト作成方法に...
-
エクセルのファイルのダウンロ...
-
rdfファイルをブラウザで表示さ...
-
ダウンロード完了後メッセージ...
おすすめ情報