#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.8.1 Script Function: Скрипт выполняет загрузку RastrWin3 открывает файлы cx195.rg2 и cx195.grf производит выделение схемы, копирует в буфер и вставляет в Paint В примере используется массив файлов, cx195_1, cx195_2 (необходимо создать дополнительно). #ce ---------------------------------------------------------------------------- #Include _WinAPI_LoadKeyboardLayout(0x0409) Opt("MouseClickDelay", 1000) ;10 milliseconds Default Opt("MouseCoordMode", 2) ;координаты относительно клиента Global $hRastr, $hPaint Global $aFilesRG2[2] ;массив файлов rg2 для загрузки $aFilesRG2[0]= "cx195_1" $aFilesRG2[1]= "cx195_2" Main() ;//////////////////////////////////////////////////////////////// Func Main() _RunRastrWin3() LoadFileRG2("cx195"); загружаем .rg2 LoadFileGRF("cx195"); загружаем .grf OpenGraf(); открыть графику OnSelect(); вкл режим выделения SelectGraf(); Графика - выделить SavePaint("cx195"); Для примера вставим в Paint и сохраним ; пример с циклом $i = 1 For $element In $aFilesRG2 LoadFileRG2($element); загружаем .rg2 из массива aFilesRG2 Sleep(10000); для отрисовки окна Send('{DOWN '& 2*$i &'}') ; для примера сделали сдвиг графики SelectGraf() SavePaint($element) $i = $i + 1 Next WinClose ($hRastr) EndFunc ; Запуск Rastr3.exe Func _RunRastrWin3() Run("C:\Program Files\RastrWin3\Rastr3.exe"); путь к файлу RastrWin3 If @error Then OnError("--- Не найден Rastr3.exe") WinWaitActive("RastrWin3") ; ожидаем загрузки $hRastr = WinGetHandle("RastrWin3") If @error Then OnError("--- Не найден Rastr3.exe") EndFunc ; Загрузка cx195.rg2 cx195.grf Func LoadFileRG2($element) WinWaitActive($hRastr) Send("^o"); Комбинация клавиш CTRL+o - Открыть файл WinWaitActive("Открыть"); ждем окно Открыть ControlSend ( "Открыть", "","[CLASS:Edit; INSTANCE:1]", $element&".rg2"); в имени файла можно указать полный путь ControlClick( "Открыть", "","[CLASS:Button; INSTANCE:2]") ;клик по кнопке открыть $err = WinWaitActive($hRastr) If @error Then OnError("--- Не найден файл "&$element&".rg2") Sleep(3000) EndFunc Func LoadFileGRF($element) WinWaitActive($hRastr) Send("^o"); повторяем все тоже самое для загрузки .grf WinWaitActive("Открыть") ControlCommand ( "Открыть", "","[CLASS:ComboBox; INSTANCE:3]", "SelectString","графика (*.grf)") ControlSend ( "Открыть", "","[CLASS:Edit; INSTANCE:1]", $element&".grf"); загружаем файл cx195.grf ControlClick( "Открыть", "","[CLASS:Button; INSTANCE:2]") $err = WinWaitActive($hRastr) If @error Then OnError("--- Не найден файл "&$element&".grf") Sleep(3000) EndFunc ;Открыть графику Func OpenGraf() MouseClick("left",150,10); меню Открыть Sleep(1000); ждем отрисовки меню Send('{DOWN 3}') Send('{ENTER}') Sleep(3000) EndFunc ; вкл режим выделения Func OnSelect() MouseClick("left",235,114); меню дополнительно Sleep(1000) Send('{DOWN}') Send('{ENTER}') ; вкл Выделить Sleep(1000) EndFunc ;Выделить кусок схемы и копируем в буфер Func SelectGraf() Sleep(1000) MouseClickDrag ( "left", 360, 445, 675, 675); Выделяем область MouseClick("right",675,675); вызываем контекстное меню Sleep(1000) Send('{DOWN 5}') Send('{ENTER}') ; копировать Sleep(1000) EndFunc ; запуск и сохранение в Paint Func SavePaint($element) Run(@SystemDir &"\mspaint.exe") If @error Then OnError("--- Не найден " &@SystemDir &"\mspaint.exe") WinWaitActive("[CLASS:MSPaintApp]") $hPaint = WinGetHandle("[CLASS:MSPaintApp]") If @error Then OnError("--- Не найден Paint") Send("^v") Sleep(1000) Send("^s") WinWaitActive("Сохранить как") ControlSend ( "Сохранить как", "","[CLASS:Edit; INSTANCE:1]", $element & ".bmp") ControlClick( "Сохранить как", "","[CLASS:Button; INSTANCE:2]") $err = WinWaitActive($hPaint) If @error Then OnError("--- Ошибка при сохранении файла "&$element&".bmp") Sleep(3000) WinClose ($hPaint) EndFunc Func OnError($err) ConsoleWrite($err) Exit(1) EndFunc ; функция для установки языка Func _WinAPI_LoadKeyboardLayout($sLayoutID, $hWnd = 0) Local Const $WM_INPUTLANGCHANGEREQUEST = 0x50 Local $aRet = DllCall("user32.dll", "long", "LoadKeyboardLayoutW", "wstr", Hex($sLayoutID, 8), "int", 0) If Not @error And $aRet[0] Then If $hWnd = 0 Then $hWnd = WinGetHandle(AutoItWinGetTitle()) EndIf DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", $WM_INPUTLANGCHANGEREQUEST, "int", 1, "int", $aRet[0]) Return 1 EndIf Return SetError(1) EndFunc