Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: Nikkorot
Дата сообщения: 24.11.2008 19:38
CrazyNNM
Да уже все варианты перепробовал,причем на разных машинах - на работе и дома, результат один и тот же.
Автор: CrazyNNM
Дата сообщения: 24.11.2008 21:07
http://files.kmvcity.ru/9244913
вот тебе ссылка на архив
там скрипт и компилированный файл))
пользуйся
Автор: Maza_Faka
Дата сообщения: 25.11.2008 05:23
Zwook

Цитата:
не смог разобратся как оно работает

Запости здесь проблемный код, с которым не можешь разобраться, а мы поможем
Автор: Nikkorot
Дата сообщения: 25.11.2008 05:30
Тоже самое и с твоим файлом.После окошка "введите задержку" начинается все по кругу
,и плодится куча процессов....
Автор: Maza_Faka
Дата сообщения: 25.11.2008 05:54
CrazyNNM
Nikkorot
Мужики! Вы в справку заглядываете? Что возвращает функция Run()?
Попробуйте так:

Код: $hostname = InputBox("Hostname", "Введите имя пингуемого")
If $hostname = "" Then $hostname = "www.mail.ru"

$time = InputBox("Delay", "Введите задержку")
If $time = "" Then $time = 4000

$iPID = Run(@ComSpec & " /c ping -w " & $time & " " & $hostname, @SystemDir, @SW_HIDE, 2)
If $iPID = 0 Then Exit MsgBox(16, "Ping error", "Непредвиденная ошибка")

Dim $sOutput

While 1
$sOutput &= StdoutRead($iPID)
If @error Then ExitLoop
WEnd


FileWrite(@ScriptDir & "\ping.log", $sOutput)
MsgBox(64, "Ping result", $sOutput)
Автор: Nikkorot
Дата сообщения: 25.11.2008 06:05
Блин, извиняюсь за выражение, заработало,пошёл читать... Хотя делал так же, только без проверки на ноль.Спасибо за пример.
Автор: Tipulatoid
Дата сообщения: 25.11.2008 06:44
Maza_Faka
Ты не можешь разжевать подробнее, чего ты тут такого волшебного сделал, что оно заработало? Просто проверил ноль? А почему глючить перестало?
Дело в том, что у меня тоже есть скрипт, использует ShellExecute, и тоже зацикливается после исполнения этой команды, зараза. Причину выкурить не могу.
Автор: Maza_Faka
Дата сообщения: 25.11.2008 06:54
Tipulatoid

Цитата:
чего ты тут такого волшебного сделал

Никакого волшебства, просто исправил синтаксическую ошибку Параметры надо разделять пробелами, а не лепить друг за другом.
Здесь именно такая ситуация:

Код:
Local $Get = Run(@ComSpec & " /c Ping -w" & $time & $HostName , "", @SW_HIDE)
Автор: CrazyNNM
Дата сообщения: 25.11.2008 07:23

Цитата:
Параметры надо разделять пробелами, а не лепить друг за другом.

ептиль, и правда, мой косяк.......


Цитата:

Ну и дебаггинг с выводом результата в файл, ещё никто не отменял

поподробнее
Автор: Maza_Faka
Дата сообщения: 25.11.2008 07:43
CrazyNNM

Цитата:
поподробнее


Код:
FileWrite(@ScriptDir & "\ping.log", $sOutput)
Автор: hunter19
Дата сообщения: 25.11.2008 08:33
Loopback
Спасибо за ссылку.
Автор: APSTENU
Дата сообщения: 25.11.2008 09:57
Maza_Faka

Цитата:
Заголовок блокнота как называется?


Заголовок правильно называется, я его на всякий в Window Info сверял
Автор: Maza_Faka
Дата сообщения: 25.11.2008 10:26
APSTENU
Показ всплывающих подсказок (a.k.a. Tooltips) в системе не отключен?
Автор: APSTENU
Дата сообщения: 25.11.2008 11:59
Maza_Faka

Цитата:
Показ всплывающих подсказок (a.k.a. Tooltips) в системе не отключен?

нет, не отключён, но у меня стоит Tool Tip Fixer который исправляет показ неполных всплывающих сообщений в системном трее...
видимо в это всё и упирается, снесу его и посмотрю что получистя
Автор: Zwook
Дата сообщения: 25.11.2008 16:27
Тэкс, сразу четверной вопрос. (Такие вообще бывают?)

Вот GUI.

Код:
#include <GUIConstantsEx.au3> ;
#include <WindowsConstants.au3> ;;

GUICreate("GUI Window") ;Создает диалоговое окно которое помещено в центре экрана.
GUISetState(@SW_SHOW) ;Показывает GUI.

$Help = GuiCtrlCreateButton("Help", 0, 0, 50, 20)
$TestGui= InputBox("Окно для проверки GUI:", "Вставьте сюда любое число:")

GuiSetState()
while GuiGetMsg() <> $GUI_EVENT_CLOSE
$msg = GuiGetMsg()
Select
Case $msg = $Help
MsgBox(1, "Help", "1 2 3 4 5.")
MsgBox(1, "Help", "One two three four five.")
EndSelect
Wend


If $TestGui = >1 Then
    $TestGui = 0
EndIf
If $TestGui = <1 Then
    $TestGui = Apple
EndIf

While 1
    sleep(4000)
    MsgBox(0, "Box", $TestGui)
Wend
Автор: Loopback
Дата сообщения: 25.11.2008 17:11

Цитата:
~ Почему после запуска скипта, GUI выполняется, а While/Wend не запускается?

Почему же, первый While...Wend работает. До второго скрипт дойдет только после выхода из первого (т.е. при закрытии GUI).

Цитата:
~ Как сделать так, чтобы GUI выключался вместе со скриптом при нажаии горячей клавиши. Допустим у меня вот так вот:

Выход по команде Exit из функции, привязанной к горячей клавише, закроет и GUI. Или я чего-то не понял?

Цитата:
~ Допустим я хочу, чтобы любой пользователь моего скрипта мог ввести в inputbox 1,2,3,4 (Или любое последователность чисел) где 1,2,3,4 это изменение переменных $a,$b,$c,$d это возможно?

Да, но придется так или иначе парсить строку, следить за правильностью ввода и т.д. Простейший способ - StringSplit.

Код: $aSplit = StringSplit($s_input, ",")
If $aSplit[0] = 4 Then
$a = $aSplit[1]
$b = $aSplit[2]
$c = $aSplit[3]
$d = $aSplit[4]
Else
MsgBox(0, "Ошибка", "Неправильный ввод.")
EndIf
Автор: Zwook
Дата сообщения: 25.11.2008 18:12

Цитата:
Почему же, первый While...Wend работает. До второго скрипт дойдет только после выхода из первого (т.е. при закрытии GUI).



А как нибудь можно сделать так, чтобы скрипт работал даже если GUI остается, при этом не запихивать GUI в основной цикл?


Цитата:
Выход по команде Exit из функции, привязанной к горячей клавише, закроет и GUI. Или я чего-то не понял?


У меня почему-то скрипт заканчивает продолжатся, а GUI остается.



Цитата:
Но по возможности, я бы сделал ввод в отдельных запросах, или сделал бы второй диалог с раздельными полями.


Чуствую себя идиотом потому, что не додумался до этого.


Цитата:
Отступов как таковых нет, но строку можно разорвать, вставив @CR:
MsgBox(0, "Test", "First line" & @CR & "Second line")


Yes Sir!
Автор: Loopback
Дата сообщения: 25.11.2008 19:51

Цитата:
А как нибудь можно сделать так, чтобы скрипт работал даже если GUI остается, при этом не запихивать GUI в основной цикл?

В принципе, GUI существует независимо от цикла, и будет существовать, пока скрипт не закончит работу. Но чтобы он не завершился раньше времени, какой-то цикл все равно должен быть.

Цитата:
У меня почему-то скрипт заканчивает продолжатся, а GUI остается.

Раз GUI остается - значит скрипт продолжает работать. Нужно копать, наверняка где-то ошибка, либо клавиша не зарегистрировалась, либо еще что-то. Вот простейший скрипт, все работает:

Код: #include <GUIConstantsEx.au3>

HotKeySet("{F1}", "ExitFunc")

GUICreate("GUI")
GUISetState()

While GUIGetMsg() <> $GUI_EVENT_CLOSE
Wend

Func
ExitFunc()
Exit
EndFunc
Автор: CrazyNNM
Дата сообщения: 25.11.2008 20:59
вот есть программка
http://files.kmvcity.ru/9262705
только у меня проблеммка, скрипты пускаются с большой задержкой
скорее всего изза того, что во время нажатия "OK" выполняется слишком много действий...
что мне следует сделать, чтоб ускорить выполнение скрипта?...
Автор: U235
Дата сообщения: 26.11.2008 06:42
CrazyNNM

Цитата:
вот есть программка
http://files.kmvcity.ru/9262705

ИМХО, использование массивов Array и циклов For позволит уменьшить код в 3-4 раза.
Автор: CrazyNNM
Дата сообщения: 26.11.2008 07:56
U235 пример в студию))
Автор: U235
Дата сообщения: 26.11.2008 11:07
CrazyNNM
Конструкция типа

Код: Dim $n[21]
Dim $p[21]
For $i=1 To 20
$n[$i]=IniRead($inf,"prog"&$i,"name","")
$p[$i]=IniRead($inf,"prog"&$i,"path","")
Next
Автор: CrazyNNM
Дата сообщения: 26.11.2008 12:03
U235
спасибо, давно пытаюсь подступиться к использованию масивов, и все никак
теперь все более-менее понятно

прога стала и правда быстрее пахать.
Автор: frb noname
Дата сообщения: 27.11.2008 13:36
Есть список list, в котором отображаются полученные файлы, есть список list_baza, в котором отображаются обработанные файлы, информация по которым занесена в базу Sqlite.

Возможно ли сделать так, чтобы необработанные файлы (которых нет в list_baza) отображались другим (например красным) цветом ?

Т.е. задача сводиться к следующему : сравнить два списка, и в большем списке выделить другим цветом строки, которых еще нет в меньшем списке.

Или не морочиться, и просто делать третий список с не отработанными файлами ?
Автор: Tipulatoid
Дата сообщения: 27.11.2008 15:26
frb noname
Так?

Код: #Include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiRichEdit.au3>
#Include <File.au3>
#Include <Array.au3>

$MainColor = 0x00FF00 ; зеленый
$FailureColor = 0x0000FF ; красный
$BackgroundColor = 0x000000 ; черный

$GUI = GUICreate("Лог",700,500)
$hRichText = RichText_Create($GUI, 0, 0, 700, 500)
RichText_BkColor ($hRichText, $BackgroundColor)
GUISetState()
_CompareProcess()


While 1
If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
WEnd

Func _CompareProcess ()
Local $aList[1]
Local $aList_baza[1]
Local $list = "list"
Local $list_baza = "list_baza"
_FileReadToArray ($list, $aList)
_FileReadToArray ($list_baza, $aList_baza)

    For $x = 1 to UBound ($aList) - 1
        If _ArraySearch ($aList_baza, $aList[$x]) <> -1 Then
            RichText_SetColor($hRichText, $MainColor)
        Else
            RichText_SetColor($hRichText, $FailureColor)
        EndIf
        RichText_AppendText($hRichText, $x & " " & $aList[$x] & @CRLF)
    Next
EndFunc
Автор: ikif
Дата сообщения: 28.11.2008 02:17
Вечер добрый.
Не знаю , обсуждалось ли здесь , способ нажатия мышкой в неактивном окне...
Помогите , как это реализовать ?
Программа в которой надо нажимать мышкой, не имеет Class, и надо сделать это по координатам.

Заранее спасибо.
Автор: Maza_Faka
Дата сообщения: 28.11.2008 06:06
ikif

Цитата:
способ нажатия мышкой в неактивном окне

Вряд-ли.


Цитата:
не имеет Class, и надо сделать это по координатам

Это можно, но в активном окне.
Автор: ynbIpb
Дата сообщения: 28.11.2008 08:18
не совсем понятен скрипт Отключения/Подключения к Интернету из шапки.
НЕ знаю как его прикрутить к моей ситуации.
Интернет ADSL подключаюсь по pppoe с компа. очень часто отваливается.
Как проверять состояние подключения?
Попробую замутить через rasdial.
Нужен полный автоматизм, чтоб не бегать включать каждый раз.
Автор: NORIO
Дата сообщения: 28.11.2008 10:30
(del)
проблема решена
Автор: Maza_Faka
Дата сообщения: 28.11.2008 10:57

Цитата:
Как проверять состояние подключения?

Попробуй этот код:

Код: $connect = _GetNetworkConnect()

If $connect Then
MsgBox(64, "Connections", $connect)
Else
MsgBox(48, "Warning", "There is no connection")
EndIf

Func
_GetNetworkConnect()
Local Const $NETWORK_ALIVE_LAN = 0x1 ;net card connection
Local Const $NETWORK_ALIVE_WAN = 0x2 ;RAS (internet) connection
Local Const $NETWORK_ALIVE_AOL = 0x4 ;AOL

Local $aRet, $iResult

$aRet
= DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0)

If BitAND($aRet[1], $NETWORK_ALIVE_LAN) Then $iResult &= "LAN connected" & @LF
If BitAND($aRet[1], $NETWORK_ALIVE_WAN) Then $iResult &= "WAN connected" & @LF
If BitAND($aRet[1], $NETWORK_ALIVE_AOL) Then $iResult &= "AOL connected" & @LF

Return $iResult
EndFunc

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.