Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
07.07.2014, 14:33
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Коллеги, добрый день! Прошу помочь мне с такой проблемой: Делаю программку на VBA, которая лезет по ссылке на определенный сайт, "бегает" там по кнопочкам и в итоге нажимает на кнопку "сохранить файл". После этого внизу окна Интернет Эксплорера высвечивается дополнительное окно с кнопками Open, Save, Cancel (скрин прилагаю). И вот уже обратиться к этому окну у меня не получается. На диалоговое окно это не очень похоже. Файл, который я хочу скачать, динамически обновляется на этом ресурсе каждый день, и постоянной прямой ссылки не имеет. При помощи сканера окон удалось выявить только его класс - DirectUIHWND . Подскажите, пожалуйста, есть ли какие-то способы работы с этим окном через VBA ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.07.2014, 18:15
|
|||
---|---|---|---|
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Hetzer3, Я знаю только один способ, кот. точно работает (кажется с некоторыми издержками в виде возможно незавершенного процесса iexplorer.exe при каких-то ситуациях или нестандартных действиях со стороны юзера): Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2014, 00:54
|
|||
---|---|---|---|
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Hetzer3 Файл, который я хочу скачать, динамически обновляется на этом ресурсе каждый день, и постоянной прямой ссылки не имеет.ну ie же ее как-то получает? значит нужно повторить его действия в смысле запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2014, 09:50
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Дмитрий, Анатолий, спасибо за ответы! Дмитрий , как я понял, Ваш код - это, грубо говоря, лишь запуск браузера с использованием определенной ссылки на ресурс? У меня это происходит вот так: Код: sql 1. 2. 3. 4. 5.
После того, как я попадаю на сайт под своим логином и паролем, я начинаю лазить по различным опциям (ставить/убирать галочки, фильтры и пр.) посредством objIE.Document.all(№) . Для того, чтобы понять, какой № имеет определенный элемент окна, на который нужно нажать, я использую окно Watches в редакторе своего кода. Но вот найти в Watches № кнопки Save, о которой я писал в первом сообщении, у меня не получается. Видимо, тут нужен другой подход. Анатолий , уточню, что тот сайт, на который я лезу, это система отчетности, с которой я скачиваю ежедневные данные продаж товаров. Очевидной прямой ссылки на скачивание отчета я тут не вижу, к сожалению. Т.е., по сути, программа у меня уже написана, всё работает как надо, во только теперь на кнопочку Save не могу понять как нажать =) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2014, 09:54
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Antonariy, прошу прощения за путаницу с именем. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2014, 11:55
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Добавлю так же, что при помощи FindWindowEx удалось найти дескриптор окна. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2014, 12:19
|
|||
---|---|---|---|
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Hetzer3, Может имеет смысл посмотреть исходный текст HTML сгенерированной страницы и поискать там сгенерированную ссылку для скачивания? К сожалению это лишь догадки, т.к. адреса сайта не знаю и проверить не могу. Но в свое время делал так. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2014, 12:20
|
|||
---|---|---|---|
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Hetzer3Добавлю так же, что при помощи FindWindowEx удалось найти дескриптор окна.Это путь в болото. Hetzer3 уточню, что тот сайт, на который я лезу, это система отчетности, с которой я скачиваю ежедневные данные продаж товаров. Очевидной прямой ссылки на скачивание отчета я тут не вижу, к сожалению.Установите fiddler, выполните в браузере все действия, необходимые для скачивания, отследите в фиддлере адрес, с которого начинается скачивание. Наблюдение за отправляемыми браузером запросами даст ключ к пониманию, откуда берется ссылка. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2014, 16:15
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Antonariy, спасибо. Я работаю с корпоративного ПК, и он мне не дает установить fiddler. Попробую дома. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2014, 11:28
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
В общем, с фиддлером так ничего и не вышло у меня. Какой-то полезной информации он не выдал, либо я не туда смотрю. Получилось решить задачу лишь дурацким путем через keybd_event , при помощи которой мы вызываем окно "View Downloads - Windows Internet Explorer" (см.скрин) нажатием клавиш Ctrl+J, и далее, при помощи всё той же keybd_event "нажимаем" на стрелочки клавиатуры и "добираемся" до кнопки "Save". Очевидные минусы - окно "View Downloads - ..." должно быть активно, иначе keybd_event не сработает. Я же пытаюсь решить задачу, не выводя IE из фонового режима. Возможно ли как-то обойти окно подтверждения скачивания файла в момент нажатия на иконку xlsx - "скачать отчет в формате xlsx"? Может кусочек html кода может что-то подсказать? Код: html 1.
Или может быть с "View Downloads - ..." можно работать как с object? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2014, 12:00
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Вызов окна "View Downloads - Windows Internet Explorer": Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2014, 14:10
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Еще один непонятный момент: решил использовать вместо keybd_event другую функцию: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Здесь WinWnd - идентификатор окна IE Так вот при запуске программы, нажатие клавиш не срабатывает. Перехожу в режим debug, жму Ctrl+F8 ( начиная со строки Call PostMessage(WinWnd, WM_KEYDOWN, VK_CONTROL, 0) ), и код срабатывает ! Но при нажатии F5 - код не срабатывает! Почему так происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2014, 15:30
|
|||
---|---|---|---|
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
добро пожаловать в болото. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.07.2014, 10:13
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Antonariy, спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.07.2014, 13:28
|
|||
---|---|---|---|
|
|||
Работа с Internet Explorer (Программное сохранение файла) |
|||
#18+
Путем проб и ошибок получилось решить задачу: (скрин окна загрузок IE см. в предыдущих сообщ.) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=60&tablet=1&tid=2156269]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 282ms |
total: | 410ms |
0 / 0 |