10代と話して驚いたこと

VBではなくVBAにて、IEの「ファイルのダウンロード」ダイアログを制御したいと思い、過去の同様の質問等を参考に下記のソースを作成して動かしてみましたが、「ファイルのダウンロード」画面で、「保存(S)」ボタンのハンドルを取得するところまではできましたが、sendMessageでクリックができず、次に進むことが出来ませんでした。

手動で「保存(S)」ボタンを押下して、強制的に「名前を付けて保存」画面に遷移させた後プログラムを再開すると、同画面の「保存(S)」ボタンのクリックはできました。

同じロジックで「名前を付けて保存」画面の「保存(S)」は動くのに、「ファイルのダウンロード」画面の「保存(S)」が動かないのはなぜでしょうか。

どなたかおわかりになる方がいらっしゃいましたら、ご回答をお願いします。

***使用環境***
OS: XP pro
IE: 6
OFFICE:2002


***以下作成したソース(エラー制御は省略)***

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetDlgCtrlID Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Test()

Dim ret1 As Long
Dim ret2 As Long

Const WM_COMMAND As Long = &H111

ret1 = FindWindow("#32770", "ファイルのダウンロード")
ret2 = FindWindowEx(ret1, 0, "Button", "保存(&S)")
Call SendMessage(ret1, WM_COMMAND, GetDlgCtrlID(ret2), ByVal ret2)

ret1 = FindWindow("#32770", "名前を付けて保存")
ret2 = FindWindowEx(ret1, 0, "Button", "保存(&S)")
Call SendMessage(ret1, WM_COMMAND, GetDlgCtrlID(ret2), ByVal ret2)

End Sub

***以上ソース終わり***

A 回答 (1件)

直接の回答ではないのですが、


URLDownloadToFile
では解決できない事項でしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報