Недавние сообщения

Страницы: 1 ... 8 9 [10]
91
Общие вопросы по AutoIt / Re: [Ошибки] Ошибка в скрипте
« Последний ответ от InnI Отправлен Январь 11, 2019, 16:39:05 »
Код: AutoIt [Выделить]
;~ AutoItSetOption("MustDeclareVars", 1)

Или объявите переменные в начале скрипта ;)
92
Общие вопросы по AutoIt / [Ошибки] Ошибка в скрипте
« Последний ответ от Xabib2302 Отправлен Январь 11, 2019, 16:03:16 »
Доброе время суток. Помогите решить проблему с ошибкой в скрипте.

 

Код: AutoIt [Выделить]
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Install.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_UPX_Parameters=--best
#AutoIt3Wrapper_Res_Description=Adobe Unpack & Integration by HeX
#AutoIt3Wrapper_Res_Fileversion=31.10.2018.0
#AutoIt3Wrapper_Res_ProductVersion=31.10.2018
#AutoIt3Wrapper_Res_LegalCopyright=HeX © 2018
#AutoIt3Wrapper_Res_Language=1049
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
AutoItSetOption("MustDeclareVars", 1)

Local $oFSO = ObjCreate("Scripting.FileSystemObject")
Local $oFile

For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "Acrobat_DC_Web_WWMUI.exe") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'Acrobat_DC.exe'))
        ExitLoop
    EndIf
Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AcrobatDCUpd\d+.msp") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AcrobatDCUpd_1.msp'))
        ExitLoop
    EndIf
Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AcrobatDCUpd\d+_incr\.msp") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AcrobatDCUpd_2.msp'))
        ExitLoop
    EndIf
    Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AcroRdrDC\d+_ru_RU\.exe") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AcroRdrDC.exe'))
        ExitLoop
    EndIf
    Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AcroRdrDCUpd\d+.msp") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AcroRdrDCUpd_1.msp'))
        ExitLoop
    EndIf
Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AcroRdrDCUpd\d+_incr\.msp") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AcroRdrDCUpd_2.msp'))
        ExitLoop
    EndIf
    Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AcrobatPro_\d+_Web_WWMUI\.exe") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AcrobatPro.exe'))
        ExitLoop
    EndIf
    Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AcrobatUpd\d+.msp") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AcrobatUpd_1.msp'))
        ExitLoop
    EndIf
    Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AcrobatUpd\d+_incr\.msp") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AcrobatUpd_2.msp'))
        ExitLoop
    EndIf
    Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AdbeRdr\d+_ru_RU\.exe") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AdbeRdr.exe'))
        ExitLoop
    EndIf
    Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AdbeRdrUpd\d+.msp") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AdbeRdrUpd_1.msp'))
        ExitLoop
    EndIf
    Next
For $oFile In $oFSO.GetFolder(@ScriptDir).Files
    If StringRegExp($oFile.Name, "AdbeRdrUpd\d+_incr\.msp") = 1 Then
        FileMove($oFSO.BuildPath(@ScriptDir, $oFile.Name), $oFSO.BuildPath(@ScriptDir, 'AdbeRdrUpd_2.msp'))
        ExitLoop
    EndIf
Next
Sleep(1000)
If FileExists (@ScriptDir & '\Acrobat_DC.exe') Then
    RunWait('7z.exe x Acrobat_DC.exe -o"' & @ScriptDir & '\Acrobat_DC"')
    FileDelete (@ScriptDir & '\Acrobat_DC\*.htm')
    DirRemove(@ScriptDir & '\Acrobat_DC\GB18030', 1)
    FileDelete (@ScriptDir & '\Acrobat_DC\Adobe Acrobat\*.msp')
    IniDelete(@ScriptDir & "\Acrobat_DC\Adobe Acrobat\setup.ini", "Product", "PATCH")
    RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\Acrobat_DC\Adobe Acrobat\AcroPro.msi" TARGETDIR="' & @ScriptDir & '\Acrobat_DC\Install" /qb')
    FileMove(@ScriptDir & "\Acrobat_DC\Adobe Acrobat\*.INI", @ScriptDir & "\Acrobat_DC\Install\", 9)
    FileMove(@ScriptDir & "\Acrobat_DC\Adobe Acrobat\*.exe", @ScriptDir & "\Acrobat_DC\Install\", 9)
    DirMove(@ScriptDir & "\Acrobat_DC\Adobe Acrobat\Transforms", @ScriptDir & "\Acrobat_DC\Install\Transforms")
    DirMove(@ScriptDir & "\Acrobat_DC\Adobe Acrobat\VCRT_x64", @ScriptDir & "\Acrobat_DC\Install\VCRT_x64")
    RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\Acrobat_DC\Install\AcroPro.msi" /p "' & @ScriptDir & '\AcrobatDCUpd_1.msp" TARGETDIR="' & @ScriptDir & '\Acrobat_DC\Install" /qb')
    If FileExists (@ScriptDir & 'AcrobatDCUpd_2.msp') Then
        RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\Acrobat_DC\Install\AcroPro.msi" /p "' & @ScriptDir & '\AcrobatDCUpd_2.msp" TARGETDIR="' & @ScriptDir & '\Acrobat_DC\Install" /qb')
    EndIf
    FileSetAttrib(@ScriptDir & '\Acrobat_DC\Install\*.*', '-H', 1)
EndIf
Sleep(1000)
If FileExists (@ScriptDir & '\AcrobatPro.exe') Then
    RunWait('7z.exe x AcrobatPro.exe -o"' & @ScriptDir & '\AcrobatPro"')
    FileDelete (@ScriptDir & '\AcrobatPro\*.htm')
    DirRemove(@ScriptDir & '\AcrobatPro\GB18030', 1)
    $hSearch = FileFindFirstFile(@ScriptDir & '\AcrobatPro\*.*') ; возвращает дескриптор поиска, определяющий путь и маску
    While 1
        $sFile = FileFindNextFile($hSearch) ; возвращает имя следующего файла, начиная от первого до последнего
        If @error Then ExitLoop
        $iAnswer = DirMove(@ScriptDir & "\AcrobatPro\" & $sFile, @ScriptDir & "\AcrobatPro\Adobe Acrobat")
        If $iAnswer = 2 Then ExitLoop
    WEnd
    FileClose($hSearch)
    FileDelete (@ScriptDir & '\AcrobatPro\Adobe Acrobat\*.msp')
    IniDelete(@ScriptDir & "\AcrobatPro\Adobe Acrobat\setup.ini", "Product", "PATCH")
    RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\AcrobatPro\Adobe Acrobat\AcroPro.msi" TARGETDIR="' & @ScriptDir & '\AcrobatPro\Install" /qb')
    FileMove(@ScriptDir & "\AcrobatPro\Adobe Acrobat\*.INI", @ScriptDir & "\AcrobatPro\Install\", 9)
    FileMove(@ScriptDir & "\AcrobatPro\Adobe Acrobat\*.exe", @ScriptDir & "\AcrobatPro\Install\", 9)
    DirMove(@ScriptDir & "\AcrobatPro\Adobe Acrobat\Transforms", @ScriptDir & "\AcrobatPro\Install\Transforms")
    DirMove(@ScriptDir & "\AcrobatPro\Adobe Acrobat\VCRT_x64", @ScriptDir & "\AcrobatPro\Install\VCRT_x64")
    RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\AcrobatPro\Install\AcroPro.msi" /p "' & @ScriptDir & '\AcrobatUpd_1.msp" TARGETDIR="' & @ScriptDir & '\AcrobatPro\Install" /qb')
    If FileExists (@ScriptDir & 'AcrobatUpd_2.msp') Then
        RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\AcrobatPro\Install\AcroPro.msi" /p "' & @ScriptDir & '\AcrobatUpd_2.msp" TARGETDIR="' & @ScriptDir & '\AcrobatPro\Install" /qb')
    EndIf
    FileSetAttrib(@ScriptDir & '\AcrobatPro\Install\*.*', '-H', 1)
EndIf
Sleep(1000)
If FileExists (@ScriptDir & '\AcroRdrDC.exe') Then
    RunWait('7z.exe x AcroRdrDC.exe -o"' & @ScriptDir & '\AcroRdrDC"')
    FileDelete (@ScriptDir & '\AcroRdrDC\*.msp')
    IniDelete(@ScriptDir & "\AcroRdrDC\setup.ini", "Product", "PATCH")
    RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\AcroRdrDC\AcroRead.msi" TARGETDIR="' & @ScriptDir & '\AcroRdrDC\Install" /qb')
    FileMove(@ScriptDir & "\AcroRdrDC\*.INI", @ScriptDir & "\AcroRdrDC\Install\", 9)
    FileMove(@ScriptDir & "\AcroRdrDC\*.exe", @ScriptDir & "\AcroRdrDC\Install\", 9)
    RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\AcroRdrDC\Install\AcroRead.msi" /p "' & @ScriptDir & '\AcroRdrDCUpd_1.msp" TARGETDIR="' & @ScriptDir & '\AcroRdrDC\Install" /qb')
    If FileExists (@ScriptDir & 'AcroRdrDCUpd_2.msp') Then
        RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\AcroRdrDC\Install\AcroRead.msi" /p "' & @ScriptDir & '\AcroRdrDCUpd_2.msp" TARGETDIR="' & @ScriptDir & '\AcroRdrDC\Install" /qb')
    EndIf
    FileSetAttrib(@ScriptDir & '\AcroRdrDC\Install\*.*', '-H', 1)
EndIf
Sleep(1000)
If FileExists (@ScriptDir & '\AdbeRdr.exe') Then
    RunWait('7z.exe x AdbeRdr.exe -o"' & @ScriptDir & '\AdbeRdr"')
    FileDelete (@ScriptDir & '\AdbeRdr\*.msp')
    IniDelete(@ScriptDir & "\AdbeRdr\setup.ini", "Product", "PATCH")
    RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\AdbeRdr\AcroRead.msi" TARGETDIR="' & @ScriptDir & '\AdbeRdr\Install" /qb')
    FileMove(@ScriptDir & "\AdbeRdr\*.INI", @ScriptDir & "\AdbeRdr\Install\", 9)
    FileMove(@ScriptDir & "\AdbeRdr\*.exe", @ScriptDir & "\AdbeRdr\Install\", 9)
    RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\AdbeRdr\Install\AcroRead.msi" /p "' & @ScriptDir & '\AdbeRdrUpd_1.msp" TARGETDIR="' & @ScriptDir & '\AdbeRdr\Install" /qb')
    If FileExists (@ScriptDir & 'AdbeRdrUpd_2.msp') Then
        RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\AdbeRdr\Install\AcroRead.msi" /p "' & @ScriptDir & '\dbeRdrUpd_2.msp" TARGETDIR="' & @ScriptDir & '\AdbeRdr\Install" /qb')
    EndIf
    FileSetAttrib(@ScriptDir & '\AdbeRdr\Install\*.*', '-H', 1)
EndIf
Exit(0)

93
Общие вопросы по AutoIt / Re: Поиск цвета, как сделать чтоб не срабатывал на моргание
« Последний ответ от InnI Отправлен Январь 11, 2019, 12:27:35 »
dwm18  [?]
Цитировать
Не выходит консоль
Запустите скрипт из SciTE (нажмите F5) - в нижней части редактора откроется панель.
94
Код: AutoIt [Выделить]
$Set = True

While Sleep(11)
  If WinActive("[class:Notepad]") Then
    If $Set Then
      SetOnTop(1)
      $Set = False
    EndIf
  Else
    If Not $Set Then
      SetOnTop(0)
      $Set = True
      DllCall("user32.dll", "bool", "BringWindowToTop", "hwnd", WinGetHandle(""))
    EndIf
  EndIf
WEnd

Func SetOnTop($OnTop)
  Local $aList = WinList("[class:CalcFrame]")
  For $i = 1 To $aList[0][0]
    WinSetOnTop($aList[$i][1], "", $OnTop)
  Next
EndFunc

95
Общие вопросы по AutoIt / Re: геолокация по IP парсинг с сайта
« Последний ответ от CreatoR Отправлен Январь 11, 2019, 11:50:41 »
С использованием http://ip-api.com/json:

Код: AutoIt [Выделить]
Global $sWebsite = 'http://ip-api.com/json'
Global $sLocation = 0
Global $sProvider = 0

$bRead = InetRead($sWebsite, 1)

If $bRead = '' Then
    MsgBox(48, 'Error', $sWebsite & ' does not responding')
Else
    $sHtml = BinaryToString($bRead, 4)
   
    $sLocation = StringRegExpReplace($sHtml, '(?si).*?"city":"(.*?)","country":"(.*?)".*', '\1, \2')
    $sProvider = StringRegExpReplace($sHtml, '(?si).*?"isp":"(.*?)".*', '\1')
EndIf

MsgBox(64, 'Results', StringFormat('Откуда вы: %s\nВаш провайдер: %s', $sLocation, $sProvider))

96
Общие вопросы по AutoIt / Re: Поиск цвета, как сделать чтоб не срабатывал на моргание
« Последний ответ от dwm18 Отправлен Январь 11, 2019, 11:39:41 »
dwm18  [?]
Цитировать
Ошибку выдает
В первой строке пропущен $
Код: AutoIt [Выделить]
$PixelExist = False



Добавлено: Январь 11, 2019, 11:21:43
ra4o  [?]
Цитировать
не так жестко контролирует область нахождения пикселя
Так я об этом и говорю. При первом вызове горит один пиксель, при втором этот же, а при третьем - другой. Естественно, dwm18 считает это миганием, а скрипт - нет.
Да один и тот же цвет не меняется !!! - вот и считаю так. координаты одни.....

спасибо за исправление ошибки


Добавлено: Январь 11, 2019, 12:01:43
InnI, я оставлял функцию "PixelSearch" намеренно , так , как она допускает некоторую степень изменения цвета  и не так жестко контролирует область нахождения пикселя, предполагая , что так и нужно автору, хотя с учётом Ваших замечаний скрипт может выглядеть так :
Код: AutoIt [Выделить]
PixelExist = False
While 1
    $coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
    If Not @error Then
        $Color = PixelGetColor($coord[0], $coord[1])
        $PixelExist = True
        For $i = 0 To 19 ;Количество циклов, за которое точка не должна потухнуть
            $hTimer = TimerInit() ; Запускает таймер и хранит дескриптор в переменной
            If $Color <> PixelGetColor($coord[0], $coord[1]) Then
                $PixelExist = False
                ExitLoop
            EndIf
            Sleep(100) ;Небольшая пауза
            $iDiff = TimerDiff($hTimer) ; Возвращает разницу во времени, от предыдущего запуска TimerInit, дескриптор которого указан в переменной
            ConsoleWrite($iDiff & @CR) ;Покажет время выполнения одного прохода цикла в консоли
        Next
        If $PixelExist Then
            SoundPlay("C:\0\zvuk.mp3", 0)
            $PixelExist = False
            Sleep(300000)
        EndIf
    EndIf
Sleep(100); Пауза между попытками поиска пикселя нужного цвета
WEnd


Скрипт заработал, но не выдает консоль - времени прохождения 1-го цикла.

на цвет срабатывает - в неактивном окне ( изначальный первый скрит ) - короче все они работают с неактивными окнами.... Это так для сведения.....

Не выходит консоль :(
97
Общие вопросы по AutoIt / Re: Поиск цвета, как сделать чтоб не срабатывал на моргание
« Последний ответ от InnI Отправлен Январь 11, 2019, 11:18:33 »
dwm18  [?]
Цитировать
Ошибку выдает
В первой строке пропущен $
Код: AutoIt [Выделить]
$PixelExist = False



Добавлено: Январь 11, 2019, 11:21:43
ra4o  [?]
Цитировать
не так жестко контролирует область нахождения пикселя
Так я об этом и говорю. При первом вызове горит один пиксель, при втором этот же, а при третьем - другой. Естественно, dwm18 считает это миганием, а скрипт - нет.
98
Может на это кто ответит, выяснилась проблема.

Когда я читаю ветку реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" она читается в зависимости от того как откомпилирован скрипт, если скрипт х64 то читаются только х64 приложения, а если скрипт откомпилирован как х86 то в список попадают только х86  приложения!

Как мне прочитать все приложения не зависимо от разрядности???


Снова сам отвечаю))

Код: AutoIt [Выделить]
$uninstall_path2 = "HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
searchUninstallStrings($uninstall_path2)
$uninstall_path3 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
searchUninstallStrings($uninstall_path3)

99
Версия AutoIt: 3.

Описание:
Здравствуйте.
Есть вопрос по окнам.

Есть открытый процесс Notepad.exe и несколько открытых процессов Calc.exe.

Посоветуйте - как скриптом назначать окнам всех процессв Calc - свойство поверх всех окон - только при условии, что окно Notepad.exe - в настоящий момент активно и не свернуто ?

А во всех остальных случаях - чтобы все окна процесса Calc.exe - были бы позади всех окон (или невидимыми).

Имеющийся скрипт может выполнять эту операцию - только для одного процесса  Calc.exe, но не для всех.
Возможно тут нужно использовать команду Winlist и как-то перебрать массив.
(нажмите для показа/скрытия)
Примечания:
100
Расскажите как можно удалить установленные программы?
Вот таким скриптом я нахожу нужную мне программу в списке установленных, например 1с.
Код: AutoIt [Выделить]
; Перебор программ по списку установленных
$uninstall_path1 = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall"
searchUninstallStrings($uninstall_path1)
$uninstall_path2 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
searchUninstallStrings($uninstall_path2)

Func searchUninstallStrings($uninstall_path)
   Local $a1cPlatforms[0]
    $i = 0
    While True
     $i += 1
     Local $entry = RegEnumKey($uninstall_path, $i)
     If @error <> 0 Then ExitLoop
     $regPath = $uninstall_path & "\" & $entry
     $DisplayName = RegRead($regPath, "DisplayName")
     If $DisplayName <> "" Then
      $message = $DisplayName & @CR
      $UninstallString = RegRead($regPath, "UninstallString")
      If $UninstallString <> "" Then
       $message &= "Uninstall: '" & $UninstallString & "'"
         if StringInStr($DisplayName, "1C:Предприятие") <> 0 then
         ; добавляем установленные платформы в массив
         _ArrayAdd($a1cPlatforms, $message)
      ; MsgBox(4096, "SubKey #" & $i & ": " & $entry, $message)
      _ArrayDisplay($a1cPlatforms)
         EndIf
      EndIf
     EndIf
  WEnd
 EndFunc
 


Вопрос как теперь зная ее имя и строку удаления, собственно это удаление выполнить автоматом?
Т.е. если я просто запущу в командной строке полученную строку 'MsiExec.exe /I{671EB630-BBC6-4E84-B40D-5044CFA9F5AC}' тогда у меня запускается удаление программы и открываются диалоговые окна,а мне надо чтобы программа удалилась не задавая вопросов.

Сейчас я могу удалить программу просто запустив в командной строке команду MsiExec.exe /X{671EB630-BBC6-4E84-B40D-5044CFA9F5AC} /passive выполняется без запросов, но правильно ли это?
Страницы: 1 ... 8 9 [10]