![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>やれるならsendkeysでやろうと思っています。
個人的には、このメソッドは嫌いですが、sendkeysでやることに反対はしません。
徹夜サポで暇してます。
ここを参考にやってみました。
http://okwave.jp/kotaeru.php3?q=894824
sendkeysは使用しておりませんが、もし使用する場合にも参考になるかと思います^^
Option Explicit
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 Const WM_COMMAND As Long = &H111
Private Const CLASSNAME_ダイアログ As String = "#32770"
Private Const CLASSNAME_ボタン As String = "Button"
Private Sub Test()
Const STEP1_TITLE As String = "ファイルのダウンロード"
Const STEP2_TITLE As String = "名前を付けて保存"
Dim l_lngWnd_Window_Step1 As Long
Dim l_lngWnd_Window_Step2 As Long
'step1
If Not FindDialog(STEP1_TITLE, l_lngWnd_Window_Step1) Then
Exit Sub
End If
Call PushSaveBtn(l_lngWnd_Window_Step1)
'step2
If Not FindDialog(STEP2_TITLE, l_lngWnd_Window_Step2) Then
Exit Sub
End If
Call PushSaveBtn(l_lngWnd_Window_Step2)
End Sub
'ダイアログを探す
Private Function FindDialog(ByVal p_strCaption As String, ByRef p_lngFindWnd As Long) As Boolean
p_lngFindWnd = 0
Do
DoEvents
' If Not IEがBUSY Then
' Exit Do
' End If
p_lngFindWnd = FindWindow(CLASSNAME_ダイアログ, p_strCaption)
Loop While p_lngFindWnd = 0
FindDialog = p_lngFindWnd <> 0
End Function
'ボタンを押す
Private Sub PushSaveBtn(ByVal p_lngWindowWnd As Long, Optional p_strBtnCaption As String = "保存(&S)")
Dim l_lngWnd_Save As Long
l_lngWnd_Save = FindWindowEx(p_lngWindowWnd, 0, CLASSNAME_ボタン, p_strBtnCaption)
Call SendMessage(p_lngWindowWnd, WM_COMMAND, GetDlgCtrlID(l_lngWnd_Save), ByVal l_lngWnd_Save)
End Sub
No.1
- 回答日時:
確かXPのSPの状況によって、ダウンロードダイアログの出方が異なったと思います。
さらにOS別を考慮すると、さらにパターンが増えます。
個別のSendKeysパターンを網羅するプログラムを組むか、WM_COMMANDでOKボタンを押させる必要があると思います。
http://okwave.jp/kotaeru.php3?q=199357
この回答への補足
ご回答ありがとうございます。
対象OSは限定ですので(XP SP2)
やれるならsendkeysでやろうと思っています。
sendkeysを送るタイミングも不明で、
busyを検知しておけばいいかと思ったら、
ダウンロードダイアログが表示してる間はbusyの
ようで状況把握を何のプロパティで確認すれば
よいかわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- マウス・キーボード real vnc viewer で遠隔先で操作が出来ない。 2 2023/07/24 15:00
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- 電子レンジ・オーブン・トースター 電子レンジの非科学的(カルト的)動作の原因について考えられる理由を知りたい 8 2022/11/29 14:47
- その他(パソコン・スマホ・電化製品) タブレットにナビゲーションバーを表示させたい。 1 2022/07/24 20:34
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- その他(IT・Webサービス) サイト上のフォルダ階層一覧、ファイル一覧を閲覧する方法は? 1 2022/11/11 15:49
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
VBA IE ダウンロード ダイアログ制御(名前を付けて保存)
Visual Basic(VBA)
-
vbaでIEの名前を付けて保存(A)をしたい
Microsoft ASP
-
VBA IE操作でダイアログ表示後、ファイルを開くボタンが押下できない
Visual Basic(VBA)
-
-
4
IE操作時、ファイルのダウンロードボタンの押下
Visual Basic(VBA)
-
5
IEのダウンロード通知バーのVBA制御(保存他)
Visual Basic(VBA)
-
6
Alt+P,Alt+NをPostmessageで送るには
Visual Basic(VBA)
-
7
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
8
Excelのマクロを実行中に、ダウンロード中のダイアログが表示されます。キャンセルを押下すると動くの
Excel(エクセル)
-
9
VBA IE通知バーの制御 バー内のボタン 開く/保存/キャンセルを押す
Visual Basic(VBA)
-
10
VBAでBook読み込み時の非表示方法は??
Visual Basic(VBA)
-
11
Webページ中の javascript をVBAから実行するには
Visual Basic(VBA)
-
12
ExcelVBAでリンク先の対象のファイルを保存
Visual Basic(VBA)
-
13
ウィンドウにキー送信で ENTER を送りたい
Visual Basic(VBA)
-
14
(UWSC) 「#32770」の意味わかりますか?
その他(プログラミング・Web制作)
-
15
今更、VBAでRPA、キーボード操作自動化ってどうやるの?
Visual Basic(VBA)
-
16
エクセルの印刷ダイアログをSendkeysで操作したい。
PowerPoint(パワーポイント)
-
17
親ウインドウにあるOKボタンを押す方法
Visual Basic(VBA)
-
18
VBSでのSendKeysでの画面の最小化
その他(プログラミング・Web制作)
-
19
「ファイルのダウンロード」のダイアログが表示しない
Windows Vista・XP
-
20
ExcelVBAでAPIを使って外部ウインドウのエディットテキストを取得する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンをマウスで押し続けたと...
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
アイコンとボタンの違い
-
VBA CommandButtonの文字ずれ
-
エクセルVBAでユーザーフォーム...
-
Excel マクロ 閉じるボタン
-
フォームの再読み込み
-
Excel VBA実行中にワークシート...
-
ボタンスタイルの BS_USERBUTTO...
-
C#でSendInputを使ったサンプル...
-
ユーザーフォームに別シートか...
-
+ボタンの名称は?
-
ボタン
-
バックスペース機能の作り方
-
マルチページで現在開いている...
-
ASP.NETのWebフォーム内で複数...
-
EXCEL2003 オプションボタン複...
-
ボタンをクリックするとエラー...
-
VBA でのボタンの移動について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
フォームの再読み込み
-
VBA CommandButtonの文字ずれ
-
ユーザーフォームに別シートか...
-
VBAのボタンの位置が変わって困...
-
Access VBA でデータペーストを...
-
Excel VBA Application.caller...
-
セルをマクロのボタンにしたい。
-
コマンドボタンやイメージにマ...
-
ボタン
-
プロシージャからイベントをコ...
-
ボタンをマウスで押し続けたと...
-
VBA でのボタンの移動について
-
C#で動的に作ったtextboxを消す。
-
バックスペース機能の作り方
-
VBAで多数のプログラムを一つの...
-
アイコンとボタンの違い
-
TextBoxでEnterキーを押すと、...
-
VBA IE ダウンロード ダイアロ...
おすすめ情報