- - PR -
VBA:IEのファイルダウンロードダイアログ制御
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-02-12 19:38
IEから表示されたファイルダウンロードダイアログ(名前を付けて保存)の
保存ファイル名をVBAで変更しようとしていますが、コンボボックスのウィンドウハンドル取得で失敗します。 有識者の方!教えていただけないでしょうか。 この方法(ComboBox32、ComboBox、Editで段階的に取得する)以外に もっと良い方法があればご教授ください。 このファイルダウンロードダイアログは, VBAで、IE起動→Webページ移動→ダウンロードボタンクリックを 実行して表示させてます。 1.GetWindowText(hDlg, winText, Len(winText)) 2.hEntry = FindWindowEx(hDlg, 0&, "ComboBox32", vbNullString) 3.hEntry = FindWindowEx(hEntry, 0&, "ComboBox", vbNullString) 4.hEntry = FindWindowEx(hEntry, 0&, "Edit", vbNullString) 5.Do SetForegroundWindow hDlg sleep 100 SetForegroundWindow hEntry sleep 100 lRet = SendMessage(hEntry, WM_SETTEXT, 0&, "d:\abc.txt") If lRet = 0 Then Exit Do End If Loop 【上記の補足】 1. の実行結果OK →winTextには、"名前を付けて保存"が取得できた hDlgは正しい値でした 2.の実行結果NG →hEntry=0となる 3.の実行結果NG(2でhEntry=0の為) 4.の実行結果NG(2でhEntry=0の為) 5.2〜4で取得した保存ファイル名欄に対して 保存ファイル名を設定しようとしています 【実行環境】 Windows Vista IE 7 | ||||
|
投稿日時: 2009-02-13 15:46
Spy++で見た感じ、ファイル名の部分は
という親子関係のようですが、ComboBoxEx32で試すとどうなりますか? | ||||
|
投稿日時: 2009-02-13 17:22
返信ありがとうございます。
ComboBoxEx32でもNGでした。 | ||||
|
投稿日時: 2009-02-14 00:08
IEとかOSのバージョンによって、ウィンドウ内の構成変わっちゃうかもよ。
そもそも、Vista + IEは保護モードとかの関連もあって、権限分離されてるから、その関係だったりしない? (他のウィンドウからの操作を受け付けないようにシャットアウトしているとか) | ||||
|
投稿日時: 2009-03-01 15:55
参加させていただきます。
私も同じような事で悩んでます。 参考になるかわかりませんが、 GetForegroundWindowにてハンドルを取得する必要があるのではないでしょうか。 参考: http://nienie.com/~masapico/api_GetWindowText.html http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t02.htm |
1