Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты

Ответить
Настройки темы
[Архив - Часть 1.2] AutoIt скрипты

Ветеран


Сообщения: 565
Благодарности: 41

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 25-01-2008
Внимание!
Тема переведена в архивное состояние





(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.
Можно ли с помощью AutoIt выбрать каталог? Хочу нацарапать оболочку, которая мне будет конфиги для nnBackup писать, дык выбрать каталог для бэкапа пока только вручную получается... Нельзя ли как-нть вывалить стандартный диалог по выбору файлов-папок, и получить из него результат действий пользователей?

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html


Отправлено: 10:47, 10-02-2006

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Подскажите пожалуйста, можно ли сделать сравнение даты создания (изминения) файла в сети, с другой датой (указанной в скрипте), и если дата создания (изминения) файла, ровняется указанной в скрипте, то пусть появляется меседжбокс, в противном случае, что-то должно делаться. Т.е, допустим в сети, лежит файл, который в последний раз был изменён 25-ого Января, 2006 г. А в скрипте, указать ту же дату для сравнения - 25-го января 2006 г. И если в момент запуска скрипта, файл не был изменён, и дата его изменения ровна указанной в скрипте, то пусть выскакивает меседжбокс, а если файл был изменён (т.е если уже его дата изминения не ровняется указанной), то что-то должно делаться (неважно что ).
Если такое возможно, подскажите плиз как это оуществить.

Заранее благодарю за внимание!

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 06:48, 08-08-2006 | #271



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 565
Благодарности: 41

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
И как это можно исправить, если ты не приводишь код?
А никак. Надо придумать другой способ. Код вот:

Код: Выделить весь код
Func GetSid($_Username)  ;возвращает сид юзера. имя должно быть полным, все довески(домен, комп) должны быть уже переданы в функкцию
	FileDelete(@TempDir & '\getsid.tmp')
	Run(@ComSpec & ' /c "' & @ScriptDir & '\psgetsid.exe" ' & $_Username & '> ' & @TempDir & '\getsid.tmp', '', @SW_HIDE)
	Sleep(50)
	Local $f= FileOpen(@TempDir & '\getsid.tmp',0)
	Local $a= FileReadLine($f,2)
	FileClose($f)
	If StringStripWS ( $a, 8) <> "" Then Return StringStripWS($a, 8)
	Return $_Username
EndFunc
Дело в том, что эта функция используется в цикле до 2-3 тыс. раз. И обработка файлового вывода вообще не вариант, цикл будет выполняться годами. Есть вариант вот такой:
Код: Выделить весь код
Func GetSid($UserName, $Domain)

    Dim $UserSID, $oWshNetwork, $oUserAccount
    $objWMIService = objGet( "winmgmts:{impersonationLevel=impersonate}!//"  & @ComputerName & "/root/cimv2")
    $oUserAccounts = $objWMIService.ExecQuery("Select SID from Win32_UserAccount WHERE Name = '" & $UserName & "' AND Domain = '" & $Domain & "'")
    For $oUserAccount In $oUserAccounts 
        Return $oUserAccount.SID
    next
EndFunc
Но у него свои недостатки - в функцию надо передавать отдельно имя пользователя и домен. В то время как первая функция умеет конвертировать имена в любом формате, например user@domain.local

Отправлено: 13:42, 08-08-2006 | #272

AdrenalinE


Сообщения: n/a

Профиль | Цитировать


Код: Выделить весь код
HotKeySet("{PAUSE}", "Pause")
Global $Paused

While 1
    $Click = _FindMonster()
    MouseClick('left', $click[0], $click[1], 1, 0)
    Attack()
WEnd



Func _FindMonster()
    Dim $iCoord
    While 1
        $iCoord = PixelSearch(250, 225, 374, 274, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        $iCoord = PixelSearch(375, 225, 474, 274, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        $iCoord = PixelSearch(415, 275, 474, 359, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        $iCoord = PixelSearch(375, 360, 474, 399, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        $iCoord = PixelSearch(250, 225, 374, 399, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        $iCoord = PixelSearch(250, 175, 474, 224, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        $iCoord = PixelSearch(475, 175, 574, 399, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        $iCoord = PixelSearch(0, 400, 424, 474, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        $iCoord = PixelSearch(0, 175, 259, 399, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        $iCoord = PixelSearch(0, 100, 664, 174, 0xFF00FF, 25, 1)
        If @error <> 1 Then ExitLoop
        ; The sleep is there to prevent the PixelSearches
        ; from lagging the script a lot if a monster is not found
        ; in the first loop
        Sleep(250)
    WEnd
    $iCoord[0] = $iCoord[0] + 4
    $iCoord[1] = $iCoord[1] + 4
    Return $iCoord
EndFunc   ;==>_FindMonster

Func Attack()
    While 1
        If WinActive("SRO_Client") And PixelGetColor(77, 47) = 3947324 Then;IF ACTIVE AND INGAME
            ; USE SKILL 1 (mine is sword attack, strike and smash) UNLESS MONSTER IS CLOSE TO DYING
            if (PixelGetColor(605, 23) = 14077580 And PixelGetColor(442, 45) = 16762566) Then
                Send("2")
                Sleep(1000)
            EndIf
            ; USE SKILL 7 (mine is combo sword attack (5hits)) UNLESS MONSTER IS ALMOST DOWN
            if (PixelGetColor(605, 23) = 14077580 And PixelGetColor(475, 45) = 16743291) Then
                Send("1")
                Sleep(1000)
            EndIf
            ; USE IMBUE SKILL (mine is skill 2) UNLESS MONSTER IS ALMOST DOWN
            if (PixelGetColor(605, 23) = 14077580 And PixelGetColor(475, 45) = 16743291) Then
                Send("3")
                Sleep(1000)
            EndIf
            ; USE SKILL 5 (mine is sword attack, stab and smash)UNLESS MONSTER IS CLOSE TO DYING
            if (PixelGetColor(605, 23) = 14077580 And PixelGetColor(442, 45) = 16762566) Then
                Send("4")
                Sleep(1000)
            EndIf
            ;THIS WILL TRY AND PICK UP ANYTHING EVEN IF YOU WALK PASSED SOME GOLD
            Send("g"); CHECK WICH KEY TO USE IN SILKROAD OPTIONS !!
            Sleep(1000); DEFAULT GRABKEY IN SILKROAD IS "G"
        EndIf
    WEnd
EndFunc   ;==>attack

Func Pause()
    $Paused = Not $Paused
    While $Paused
        Sleep(100)
    WEnd
EndFunc   ;==>Pause
нужно подправить скриптик, после нахождения монстра-клика-атаки - почему-то не происходит возврат на поиск монстра =\
подскажите что не так?

Последний раз редактировалось AdrenalinE, 10-08-2006 в 19:29.


Отправлено: 12:40, 10-08-2006 | #273


Аватара для Sanja Alone

Ищу Человека…


Сообщения: 420
Благодарности: 67

Профиль | Сайт | Отправить PM | Цитировать


AdrenalinE
Цитата:
почему-то не происходит возврат на поиск монстра
Причина в отсутствии условия завершения ф-ции Attack(). Там должен быть не бесконечный цикл, а условный:
Код: Выделить весь код
Func Attack()
While <монстр жив>
;чистим монстру репу
WEnd
EndFunc

-------
Sanja Alone's site (ConvRegToAU3, OEsr, RSA, AutoIt скрипты)


Отправлено: 02:38, 11-08-2006 | #274

sunb0rn


Сообщения: n/a

Профиль | Цитировать


Цитата:
Код: Выделить весь код
Func GetSid($_Username)  ;возвращает сид юзера. имя должно быть полным, все довески(домен, комп) должны быть уже переданы в функкцию
	FileDelete(@TempDir & '\getsid.tmp')
	Run(@ComSpec & ' /c "' & @ScriptDir & '\psgetsid.exe" ' & $_Username & '> ' & @TempDir & '\getsid.tmp', '', @SW_HIDE)
	Sleep(50)
	Local $f= FileOpen(@TempDir & '\getsid.tmp',0)
	Local $a= FileReadLine($f,2)
	FileClose($f)
	If StringStripWS ( $a, 8) <> "" Then Return StringStripWS($a, 8)
	Return $_Username
EndFunc
А если попробовать вместо Run() и Sleep(50) --> RunWait () ставить, а то точно по как минимум 100 секунд функция исполняется!!! И скорость выполнения не будет зависить от времени, а менятся.

Отправлено: 18:47, 11-08-2006 | #275


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Есть такой вопрос - как заставить скрипт удалить самого себя? Я пробовал сделать такое, прописав создание файла (батника), который удляет скрипт, а затем и самого себя, но мне нужно запускать скрипт не из текущего каталога, а из другого, поэтому при запуске батника, он (батник) работает как бы из того каталога, с которого был запущен скрипт, поэтому и не удаляет сам скрипт (хотя на странность, удаляет сам себя).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 00:19, 14-08-2006 | #276


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Всё, разобрался ...

Я пробовал через макрос @ScriptName, но таким образом удаляется сам скрипт, а если он закомпилирован в екзешник, то он не удаляется... вот я и решил эту задачю другим способом, и опять таки в помощь пришёл батник:

Код: Выделить весь код
FileWrite(@ScriptDir&"\temp.bat", "Del /q """ & @ScriptDir & "\" & @ScriptName & """" & @CRLF & "Del /q """ & @ScriptDir & "\temp.bat""")
Run("temp.bat", @ScriptDir, @SW_HIDE)

P.S:
А на счёт моего предыдущего вопроса в посте #272 никто не знает? хотябы подскажите, возможно такое реализовать на AutoIt, или нет?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 01:05, 14-08-2006 | #277


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Есть вопрос - можно ли по хэндлу восстановить имя файла?.. В противном случае функции FileFind* почти бесполезны

EDIT: все, разобрался - повелся на имена функций, несмотря на схожее название эти две функции делают совершенно разные вещи - одна возвращает хэндл, а другая имя

Последний раз редактировалось amel27, 14-08-2006 в 08:37.


Отправлено: 07:31, 14-08-2006 | #278


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Кто-то может подсказать - как можно осуществить поиск определённого слова, в файле (например, в test.tmp), и именно в простом файле содержащем текст, а не в ini (т.к решение для ини уже тут пдооставили ранее).

Заранее спасибо!

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 06:43, 15-08-2006 | #279


Аватара для Sanja Alone

Ищу Человека…


Сообщения: 420
Благодарности: 67

Профиль | Сайт | Отправить PM | Цитировать


Creat0R
Цитата:
поиск определённого слова в файле
Код: Выделить весь код
;в каком файле искать текст
$InputFile = 'test.tmp'
;какой текст искать
$TxtToFind = 'иСкоМый Текст'

;демонстрация работы ф-ции
$var = _FindTextInFile($InputFile,$TxtToFind)
MsgBox(0,'','Текст <'&$TxtToFind&'> найден в строке '&$var[0]&@LF&'Содержимое строки:'&@LF&@LF&$var[1])

;ф-ция возвращает массив из двух эл-тов (0 - номер строки файла, к-рая содержит искомый текст, 1 - сама строка)
Func _FindTextInFile($ifile,$text)
Local $i
Dim $ret[2]
$file = FileOpen($ifile,0)
$a = StringSplit( FileRead($file, FileGetSize($ifile)), @LF)
FileClose($file)
#cs
поиск кириллического текста без учета регистра символов возможен только в сл. 
принудительного приведения искомой и текущей анализируемой строк к общему регистру 
(ф-ции StringLower или StringUpper), 
т.к. данный режим ф-ции StringInStr работает только с латиницей
#ce
If StringIsASCII($text) Then
	For $i = 1 To UBound($a,1)-1
		If StringInStr($a[$i],$text) Then
			$ret[0]=$i
			$ret[1]=$a[$i]
			Return $ret
		EndIf
	Next
Else
	For $i = 1 To UBound($a,1)-1
		If StringInStr(StringLower($a[$i]),StringLower($text)) Then
			$ret[0]=$i
			$ret[1]=$a[$i]
			Return $ret
		EndIf
	Next
EndIf
EndFunc

-------
Sanja Alone's site (ConvRegToAU3, OEsr, RSA, AutoIt скрипты)


Последний раз редактировалось Sanja Alone, 15-08-2006 в 09:54.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:40, 15-08-2006 | #280



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? DreDo Хочу все знать 4 01-12-2009 18:54
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. Vadikan AutoIt 1543 18-01-2009 10:46
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
[Архив - Часть 1.3] AutoIt скрипты biork AutoIt 503 09-06-2007 11:27
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход