PapaFilippa
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Ребята помогите разобраться, что за ошибку выдает скрипт: Код: Opt("SendKeyDelay", 50); Opt("WinTitleMatchMode", 2); $count = 0; While 1 $lastdate = "03/30/2007"; Это дата самой свежей котировки, подлежащей граблению (формат MM/DD/YYYY). $count = $count + 1 $line = StringSplit(FileReadLine(@ScriptDir & "\datagrabber.task", $count), ",;"&@TAB); If @error <> 0 Then Exit; $symbol = $line[1]; $period = StringUpper($line[2]); If $period == "D" Then $firstdate = "02/01/2007" Else $firstdate = "02/01/2007" EndIf DirCreate(@ScriptDir & "\" & @YEAR & @MON & @MDAY); $out = @ScriptDir & "\" & @YEAR & @MON & @MDAY & "\" & $symbol & "_" & $period & ".csv"; WinWaitActive("P018 Romank"); Sleep(2000); Send(StringLower($symbol &","& $period &"{ENTER}")); Sleep(300); If StringInStr(WinGetText("P018 Romank"), "not found") Then Sleep(5000); ContinueLoop; Contract '' not found. EndIf; ; начальная подготовка MouseClick("", 1018, 709); Sleep(5000); MouseClick("right", 451, 709, 2); MouseClick("", 413, 486); ; установка временной шкалы на последний день MouseClick("right", 451, 709, 2); MouseClick("", 413, 443); WinWaitActive("Go To Date:"); $date = StringSplit($lastdate, "/") Opt("MouseCoordMode", 0); MouseClick("", 33, 38, 1, 5); Send($date[1]); MouseClick("", 52, 38, 1, 5); Send($date[2]); MouseClick("", 76, 38, 1, 5); Send($date[3]); MouseClick("", 163, 38, 1, 5); Sleep(5000); While DateRange($firstdate, $lastdate) WinWaitActive("P018 Romank"); Sleep(1000); Opt("MouseCoordMode", 1); WinMenuSelectItem("","","P&rint","Tabular Display"); Sleep(1000); Send("{TAB}{DOWN}"); For $i = 0 To 3 Send("+^{RIGHT}+{PGDN 8}^c{DOWN}^{LEFT}"); FileWriteLine($out, StringReplace(StringReplace(ClipGet(), @TAB, ","), " ", "")); Next; Send("+^{RIGHT}+^{LEFT}^c^{F4}"); $lastdate = StringStripWS(ClipGet(), 8); MouseClickDrag("", 120, 520, 520, 520, 30); WEnd; WEnd; Func DateRange($date1, $date2) $date1 = StringSplit($date1, "/"); $date2 = StringSplit($date2, "/"); If $date1[3] > $date2[3] Then Return 0; If $date1[3] < $date2[3] Then Return 1; If $date1[1] > $date2[1] Then Return 0; If $date1[1] < $date2[1] Then Return 1; If $date1[3] > $date2[2] Then Return 0; If $date1[2] < $date2[2] Then Return 1; Return 0; EndFunc; | Писал его не я, я и не умею, т.е. совсем не разбираюсь, а тот кто писал не найдешь уже. Так вот скрипт выполняет следующее, он иммитирует клики мышью, работает с граффиком, собирает с графика данные, кладет их в файлик CSV. Обратите внимание на эту фразу: Код: WinMenuSelectItem("","","P&rint","Tabular Display"); Sleep(1000); Send("{TAB}{DOWN}"); For $i = 0 To 3 Send("+^{RIGHT}+{PGDN 8}^c{DOWN}^{LEFT}"); FileWriteLine($out, StringReplace(StringReplace(ClipGet(), @TAB, ","), " ", "")); Next; | Как мне сказали, она отвечает за открытие печатного окна, в котором должен произойти троекратный захват в клипборд строковых данных, но этот захват не происходит. |