
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBAでオプションボタンによって...
-
C#プログラムで、ボタンをショ...
-
VBAで多数のプログラムを一つの...
-
VBA(エクセル)で自動的にボタン...
-
C#でSendInputを使ったサンプル...
-
閉じると「+」になり開くと「-...
-
C♯初心者で、四則演算の電卓を...
-
Excel VBA Application.caller...
-
CommandButtonのCaptionを変化...
-
TextBoxでEnterキーを押すと、...
-
バックスペース機能の作り方
-
フォームの再読み込み
-
マルチページで現在開いている...
-
ユーザーフォームに別シートか...
-
VBA ユーザーフォームラベルキ...
-
VB6でマルチスレッド?
-
uwscとWinShotを使いスクリーン...
-
ボタンの増殖
-
フォームのアイコンが行方不明...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBAで多数のプログラムを一つの...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
コマンドボタンやイメージにマ...
-
C#プログラムで、ボタンをショ...
-
BorlandC++Builderでのタイマー...
-
[VB.net] ボタン(Flat)のEnable...
-
フォームの再読み込み
-
ボタンをマウスで押し続けたと...
-
閉じると「+」になり開くと「-...
-
Access VBA でデータペーストを...
-
C#でSendInputを使ったサンプル...
-
バックスペース機能の作り方
-
アイコンとボタンの違い
-
セルをマクロのボタンにしたい。
-
Excel マクロ 閉じるボタン
-
VBAのボタンの位置が変わって困...
おすすめ情報