Что нового

[Автоматизация] InetGet. Сохранить файл без прямой ссылки.

Keiga

Новичок
Сообщения
7
Репутация
0
Добрый день.

При нажатии на кнопку, сервер генерирует отчет по текущей странице в pdf файл и отдает клиенту. При этом появляется диалоговое окно о сохранении файла.

Как перехватить данный файл скриптом?
Подскажите можно ли использовать InetGet без прямой ссылки на файл? Если можно то с примерами.
Или придется искать окно сохранения, скриптом выбирать "Save as" и указывать прочие параметры? Как тогда поступить в этом случае.
 
Автор
Keiga

Keiga

Новичок
Сообщения
7
Репутация
0
Пошел сложным путём. Собрал из примеров и кусочков данную функцию (которая выбирает "Сохранить как" и указывает путь и имя файла для сохранения):

Код:
Func ClickOpenInIEBar()

$hIE = WinGetHandle("[Class:IEFrame]")
$hCtrl = ControlGetHandle($hIE,"","[Class:DirectUIHWND]")
$aPos = ControlGetPos($hIE,"",$hCtrl)
$x = $aPos[2]-160
$y = $aPos[3]-30

WinActivate($hIE) ;doesn't work in the background
ControlClick($hIE,"",$hCtrl,"primary",1,$x,$y)
ControlSend($hIE,"",$hCtrl,"{Down}") 
ControlSend($hIE,"",$hCtrl,"{Down}") 
ControlSend($hIE,"",$hCtrl,"{Enter}")

WinWaitActive("[Class:#32770]")
$title = WinGetTitle("Сохранить как")
WinActivate($title)
WinWaitActive($title)
$filename = ControlGetText($title, "", "Edit1")
$fullpath = "D:\"
ControlSetText($title, "", "Edit1", $fullpath & $filename)
ControlSend($title,"","","{Space}")
ControlSend($title,"","","{Enter}")

EndFunc


Проблема в том, что функция работает только в том случае если я запускаю скрипт при уже существующем окне с предложением открыть или сохранить файл.

Если же я использую её после того как нажимаю кнопку генерации отчета, то ничего не происходит.

Например так:
Код:
#include <IE.au3>
$oIE = _IECreate("тут адрес сервера",1) ;открываем сайт

;Сохраняем отчет
_IEImgClick ($oIE, "pdf.gif", "src") ; жмем по кнопке PDF
Sleep(5000) ;ждем генерации и появления сообщения
ClickOpenInIEBar() ;вызываем функцию

Во втором примере описание функции дублировать не стал, но оно есть.

В чем ошибка?
 
Автор
Keiga

Keiga

Новичок
Сообщения
7
Репутация
0
Потому что с перенаправлением, к сожалению, не разобрался. Не получилось связать нажатие кнопки, генерацию отчета и получение ссылки.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
На сайт можно глянуть где такая генерация?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Keiga [?]
Не получилось связать нажатие кнопки, генерацию отчета и получение ссылки
Ну так может мы попробуем? :smile:
 
Автор
Keiga

Keiga

Новичок
Сообщения
7
Репутация
0
На сайт можно глянуть где такая генерация?
Сайт находится на локальных ресурсах, поэтому показать его к сожалению не могу.
Вот код кнопки через DebugBar:
Код:
<IMG title="Сохранить в PDF" onclick="prj.saveReportAs('table1.rdl', 'pdf', 'Файл отчета', getParamsXml())" src="img/icon/pdf.gif" width=16 height=16>
После нажатия, сервер возвращает "Файл отчета.pdf".

Ну так может мы попробуем?
Я был бы благодарен за любую помощь, т.к. самому довольно сложно во всём разобраться.
 
Автор
Keiga

Keiga

Новичок
Сообщения
7
Репутация
0
Все еще пытаюсь разобраться в данном вопросе.
В неофициальном FAQ описан метод с использованием WinHttp, но как в данный пример передать не ссылку, а клик по кнопке которая вызывает функцию и отдаст файл? Либо как зная код кнопки, получить корректный адрес для использования в скрипте?
 

BIOS

Жизнь - игра. График - супер, но сюжет - хреновый.
Сообщения
173
Репутация
69
Нужно смотреть весь код, чтобы понять как формируется ссылка
Нужен листинг всей страницы со всеми включающимися скриптами
 
Верх