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

Страницы: 1 ... 8 9 [10]
91
Общие вопросы по AutoIt / Re: Поиск цвета, как сделать чтоб не срабатывал на моргание
« Последний ответ от InnI Отправлен Январь 11, 2019, 12:27:35 »
dwm18  [?]
Цитировать
Не выходит консоль
Запустите скрипт из SciTE (нажмите F5) - в нижней части редактора откроется панель.
92
Код: 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

93
Общие вопросы по 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))

94
Общие вопросы по 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-го цикла.

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

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



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

Когда я читаю ветку реестра "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)

97
Версия AutoIt: 3.

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

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

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

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

Имеющийся скрипт может выполнять эту операцию - только для одного процесса  Calc.exe, но не для всех.
Возможно тут нужно использовать команду Winlist и как-то перебрать массив.
(нажмите для показа/скрытия)
Примечания:
98
Расскажите как можно удалить установленные программы?
Вот таким скриптом я нахожу нужную мне программу в списке установленных, например 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 выполняется без запросов, но правильно ли это?
99
Общие вопросы по AutoIt / Re: Поиск цвета, как сделать чтоб не срабатывал на моргание
« Последний ответ от dwm18 Отправлен Январь 11, 2019, 04:27:13 »
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


Ошибку выдает, файл прикрепил

100
Общие вопросы по AutoIt / Re: геолокация по IP парсинг с сайта
« Последний ответ от CreatoR Отправлен Январь 11, 2019, 01:30:12 »
Код: AutoIt [Выделить]
Global $sWebsite = 'https://2ip.ru/'
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).*?geoip/"/>(.*?)</a>.*', '\1')
    $sProvider = StringRegExpReplace($sHtml, '(?si).*?<a href="/isp/.*?">\s*(.*?)\s*</a>.*', '\1')
EndIf

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

Страницы: 1 ... 8 9 [10]