Показать полную графическую версию : [решено] как поставить скрипт в очередь ?
есть у меня скрипт на autoit который может быть запущен несколько раз в то время пока первый еще не успел отработать до конца. И мне нужно что бы они как бы в очередь вставали. Работать параллельно им нельзя и сбрасывать те что запущены тоже нельзя.
Есть способ _Singleton() что бы узнать, что уже запущен скрипт, если бы можно было только 2 экземпляра запустить то я бы просто проверку в цикл поставил, но когда их может быть несколько все становится сложнее.
Нужно знать длину очереди и номер в очереди, тут я малость встал.
Может есть какие идеи ?
Можно воспользоваться тем, что PID'ы растут последовательно.
При запуске приложения проверяйте наличие процессов с тем же именем (исключая, естественно, сам текущий экземпляр приложения), получите их PID'ы, следите за процессом с наивысшим PID'ом, и ждите, пока он не будет завершён.
Можно воспользоваться тем, что PID'ы растут последовательно. »
Вообще то нет, есть у меня в процессах старые процессы с меньшим большим значением у PID.
с меньшим значением у PID. »
С большим, наверное?
Я не находил информацию, как подтверждающую, либо опровергающую ранее приведённое предположение. Буду рад, ежели кто поделится.
проверяю
запускаю калькулятор PID 2148, затем блокнот PID 5120
закрываю калькулятор и блокнот
снова запускаю
калькулятор PID 5632, затем блокнот PID 2296
а самый высокий PID у pythonw.exe 6140, а запущен он еще утром
так что по PID не отследить
В общем вот что у меня получилось:
$iQueue_Position = _AppSetQueue(500)
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(64, 'Title', StringFormat (http://www.autoitscript.com/autoit3/docs/functions/StringFormat.htm)('Process: %i\nQueue position: %i', @AutoItPID (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitpid), $iQueue_Position))
; #FUNCTION# ====================================================================================================
; Name...........: _AppSetQueue
; Description....: Sets Queue for the next instances of this script.
; Syntax.........: _AppSetQueue($iWait = 500, $iOnStart = 1)
; Parameters.....: $iWait [Optional] - Wait between each queue check (default is 500 ms).
; $iOnStart [Optional/Internal] - Indicates if the function was executed on start, only internal usage.
;
;
; Return values..: Success - Return Queue position (-1 if this is the first instance of the program).
; Failure - None.
; Author.........: G.Sandler (CreatoR)
; Modified.......:
; Remarks........:
; Related........:
; Link...........:
; Example........:
; ==================================================================================================== ===========
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _AppSetQueue($iWait = 500, $iOnStart = 1)
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sUnique_Win, $sQueue, $aQueue, $iC, $sTmp_Script, $nEdit, $hFile, $iLast_Queue
$sUnique_Win = "__Au3_Queue_Window__"
$sQueue = ControlGetText (http://www.autoitscript.com/autoit3/docs/functions/ControlGetText.htm)($sUnique_Win, "", "Edit1")
$aQueue = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)($sQueue, @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf), 1)
;The script Exits (called by OnAutoItExitRegister)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) IsDeclared (http://www.autoitscript.com/autoit3/docs/functions/IsDeclared.htm)("iOnStart") Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$sQueue = ""
$iC = 0
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aQueue[0]
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) StringRegExp (http://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm)($aQueue[$i], '^\d+:' & @AutoItPID (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitpid)) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$iC += 1
$sQueue &= $iC & ":" & StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($aQueue[$i], '^\d+:', '') & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
$sQueue = StringStripWS (http://www.autoitscript.com/autoit3/docs/functions/StringStripWS.htm)($sQueue, 3)
ControlSetText (http://www.autoitscript.com/autoit3/docs/functions/ControlSetText.htm)($sUnique_Win, "", "Edit1", $sQueue)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
OnAutoItExitRegister (http://www.autoitscript.com/autoit3/docs/functions/OnAutoItExitRegister.htm)("_AppSetQueue")
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) WinExists (http://www.autoitscript.com/autoit3/docs/functions/WinExists.htm)($sUnique_Win) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$sTmp_Script = _
'#NoTrayIcon' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & _
'GUICreate("' & $sUnique_Win & '", 100, 20)' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & _
'$nEdit = GUICtrlCreateEdit("1:' & @AutoItPID (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitpid) & '", 0, 0, 100, 20)' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & _
'While GUICtrlRead($nEdit) <> ""' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & _
' Sleep(100)' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & _
'WEnd' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & _
'FileDelete(@TempDir & "\~tmp_GUI_src.tmp")' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & _
'Run(@ComSpec & '' /C Del /F /Q "'' & @TempDir & ''\~tmp_GUI.tmp"'', '''', @SW_HIDE)' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & _
'Exit' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf)
$hFile = FileOpen (http://www.autoitscript.com/autoit3/docs/functions/FileOpen.htm)(@TempDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@tempdir) & "\~tmp_GUI_src.tmp", 2)
FileWrite (http://www.autoitscript.com/autoit3/docs/functions/FileWrite.htm)($hFile, $sTmp_Script)
FileClose (http://www.autoitscript.com/autoit3/docs/functions/FileClose.htm)($hFile)
FileCopy (http://www.autoitscript.com/autoit3/docs/functions/FileCopy.htm)(@AutoItExe (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitexe), @TempDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@tempdir) & "\~tmp_GUI.tmp", 1)
Run (http://www.autoitscript.com/autoit3/docs/functions/Run.htm)(@TempDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@tempdir) & '\~tmp_GUI.tmp /AutoIt3ExecuteScript "' & @TempDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@tempdir) & '\~tmp_GUI_src.tmp"')
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) -1
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
$iLast_Queue = Number (http://www.autoitscript.com/autoit3/docs/functions/Number.htm)(StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($aQueue[$aQueue[0]], '^(\d+)', '\1'))
$sQueue &= @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf) & $iLast_Queue + 1 & ":" & @AutoItPID (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitpid)
ControlSetText (http://www.autoitscript.com/autoit3/docs/functions/ControlSetText.htm)($sUnique_Win, "", "Edit1", $sQueue)
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
$sQueue = ControlGetText (http://www.autoitscript.com/autoit3/docs/functions/ControlGetText.htm)($sUnique_Win, "", "Edit1")
$aQueue = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)($sQueue, @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf), 1)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) StringRegExp (http://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm)($aQueue[1], '^\d+:' & @AutoItPID (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitpid)) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $aQueue[0] ;It' our turn in the queue
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Sleep (http://www.autoitscript.com/autoit3/docs/functions/Sleep.htm)($iWait)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)
упс, не обновил страницу. а тут уже кучу всего написали ))
я так понимаю тут временные файлы используются ?
мне приходила в голову идея с файлами, но не хотелось мучить ssd и я на эту идею подзабил.
я так понимаю тут временные файлы используются ? »
Используется, и только один раз при запуске первой копии программы.
Делается это для того, чтобы запустить дополнительный (промежуточный-нейтральный) скрипт, который действует как хранилище для очереди запускаемых копий скриптов.
а вы можете описать поподробней как там все работает. честно говоря код сложноват для меня.
как там все работает »
При первом запуске создаётся скрипт с окном и элементом Edit для хранения списка очереди.
При повторном запуске скрипт дописывает в этот самый Edit-элемент себя как ожидающего очереди, и ждёт пока эта очередь до него дойдёт (пока в списке Edit он не будет первым).
Когда скрипт завершает свою работу, он удаляет себя из списка очереди, корректируя список.
код сложноват для меня »
А всё что от вас требуется, так это помещение этого кода в начало вашего скрипта.
Там где MsgBox, это и есть тело вашего скрипта.
Немного подправил код.
Вот более простой скрипт (не использует временных файлов):
$iQueue_Position = _AppSetQueue(100)
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(64, 'Title', StringFormat (http://www.autoitscript.com/autoit3/docs/functions/StringFormat.htm)('Process: %i\nQueue position: %i', @AutoItPID (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitpid), $iQueue_Position))
; #FUNCTION# ====================================================================================================
; Name...........: _AppSetQueue
; Description....: Sets Queue for the next instances of this script.
; Syntax.........: _AppSetQueue($iWait = 100)
; Parameters.....: $iWait [Optional] - Waiting queue (default is 500 ms).
;
;
; Return values..: Success - Return Queue position (0 if this is the first instance of the program).
; Failure - None.
; Author.........: G.Sandler (CreatoR)
; Modified.......:
; Remarks........:
; Related........:
; Link...........:
; Example........:
; ==================================================================================================== ===========
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _AppSetQueue($iWait = 100)
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sUnique_Win, $sScriptName, $aProcList, $aWinList, $iQueue, $hPrev_Queue_Win, $j
$sUnique_Win = "_Au3_Queue_Window_"
$sScriptName = @ScriptName (http://www.autoitscript.com/autoit3/docs/macros.htm#@scriptname)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) @Compiled (http://www.autoitscript.com/autoit3/docs/macros.htm#@compiled) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$sScriptName = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)(@AutoItExe (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitexe), '^.*\\', '')
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
$aProcList = ProcessList (http://www.autoitscript.com/autoit3/docs/functions/ProcessList.htm)($sScriptName)
$aWinList = WinList (http://www.autoitscript.com/autoit3/docs/functions/WinList.htm)($sUnique_Win)
$iQueue = 0
$hPrev_Queue_Win = 0
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aWinList) > 1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$hPrev_Queue_Win = $aWinList[1][1]
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aProcList)-1
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $j = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aWinList)-1
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $aWinList[$j][0] = $sUnique_Win And (http://www.autoitscript.com/autoit3/docs/keywords.htm#And) WinGetProcess (http://www.autoitscript.com/autoit3/docs/functions/WinGetProcess.htm)($aWinList[$j][1]) = $aProcList[$i][1] Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$iQueue += 1
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $j > 1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$hPrev_Queue_Win = $aWinList[$j-1][1]
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
ExitLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ExitLoop)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
AutoItWinSetTitle (http://www.autoitscript.com/autoit3/docs/functions/AutoItWinSetTitle.htm)($sUnique_Win & "__")
ControlSetText (http://www.autoitscript.com/autoit3/docs/functions/ControlSetText.htm)($sUnique_Win & "__", "", "Edit1", $iQueue + 1)
AutoItWinSetTitle (http://www.autoitscript.com/autoit3/docs/functions/AutoItWinSetTitle.htm)($sUnique_Win)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $iQueue = 0 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) 0
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) WinExists (http://www.autoitscript.com/autoit3/docs/functions/WinExists.htm)($hPrev_Queue_Win)
Sleep (http://www.autoitscript.com/autoit3/docs/functions/Sleep.htm)($iWait)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $iQueue
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)
был бы признателен за объяснение что тут и как .
я полез в функцию _Singleton() которой определяется запущен ли уже скрипт или нет и выяснил, что она работает за счет создания у процесса неких mutant. Не совсем понимаю что это и для чего, но тем не менее с помощью них было бы очень удобно все сделать, если бы не одно но, при проверке на наличие у процесса этого mutant если его нет функция его создает, а как просто проверить есть или нет я не знаю. Если бы можно было это делать, то можно было бы хранить номер в очереди у каждого процесса.
был бы признателен за объяснение что тут и как »
Я использовал „систему билетов“, как это сделано например в поликлинике :)
Каждый запущенный скрипт получает „билетик“, для этого используется встроенное окно AutoIt (см. AutoItWinGetTitle).
Далее проверяются все окна от процессов нашего скрипта, и если скрипт на очереди (первый в списке), то продолжается (выполняется) его работа.
Если бы можно было это делать, то можно было бы хранить номер в очереди у каждого процесса. »
Спрашивается зачем?
Пример выше разве не работает?
ну у меня скрипт без окон.
и самое главное они запускаются на терминальном сервере, и в результате скрпты всех пользователей в очередь встают, а надо чтоб очередь создавалась у каждого пользователя своя. с помощью _Singleton() легко отслеживается процесс от текущего пользователя, если делать к примеру так _Singleton($sProIDText & @UserName, 1)
у меня скрипт без окон »
У AutoIt есть встроенное (скрытое) окно, его и использует моя функция.
самое главное они запускаются на терминальном сервере, и в результате скрпты всех пользователей в очередь встают, а надо чтоб очередь создавалась у каждого пользователя своя »
Вот это «самое главное» следует указывать в самом начале, при созданий темы.
Можно попробовать так:
#include (http://www.autoitscript.com/autoit3/docs/keywords.htm##include) "WinAPIEx.au3" ;http://autoit-script.ru/index.php/topic,47.0.html
$iQueue_Position = _AppSetQueue(100)
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(64, 'Title', StringFormat (http://www.autoitscript.com/autoit3/docs/functions/StringFormat.htm)('Process: %i\nQueue position: %i', @AutoItPID (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitpid), $iQueue_Position))
; #FUNCTION# ====================================================================================================
; Name...........: _AppSetQueue
; Description....: Sets Queue for the next instances of this script.
; Syntax.........: _AppSetQueue($iWait = 100, $sUserName = @UserName)
; Parameters.....: $iWait [Optional] - Waiting queue (default is 100 ms).
; $sUserName [Optional] - Limit queue for specfific system user.
;
;
; Return values..: Success - Return Queue position (0 if this is the first instance of the program).
; Failure - None.
;
; Author.........: G.Sandler (CreatoR)
; Modified.......:
; Remarks........:
; Related........:
; Link...........:
; Example........:
; ==================================================================================================== ===========
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _AppSetQueue($iWait = 100, $sUserName = @UserName (http://www.autoitscript.com/autoit3/docs/macros.htm#@username))
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sUnique_Win, $sScriptName, $aProcList, $aWinList, $iQueue, $hPrev_Queue_Win, $aProcUser
$sUnique_Win = "_Au3_Queue_Window_"
$sScriptName = @ScriptName (http://www.autoitscript.com/autoit3/docs/macros.htm#@scriptname)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) @Compiled (http://www.autoitscript.com/autoit3/docs/macros.htm#@compiled) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$sScriptName = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)(@AutoItExe (http://www.autoitscript.com/autoit3/docs/macros.htm#@autoitexe), '^.*\\', '')
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
$aProcList = ProcessList (http://www.autoitscript.com/autoit3/docs/functions/ProcessList.htm)($sScriptName)
$aWinList = WinList (http://www.autoitscript.com/autoit3/docs/functions/WinList.htm)($sUnique_Win)
$iQueue = 0
$hPrev_Queue_Win = 0
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aWinList) > 1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$hPrev_Queue_Win = $aWinList[1][1]
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aProcList)-1
$aProcUser = _WinAPI_GetProcessUser($aProcList[$i][1])
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $aProcUser[0] <> $sUserName Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
ContinueLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ContinueLoop)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $j = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aWinList)-1
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $aWinList[$j][0] = $sUnique_Win And (http://www.autoitscript.com/autoit3/docs/keywords.htm#And) WinGetProcess (http://www.autoitscript.com/autoit3/docs/functions/WinGetProcess.htm)($aWinList[$j][1]) = $aProcList[$i][1] Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$iQueue += 1
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $j > 1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$hPrev_Queue_Win = $aWinList[$j-1][1]
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
ExitLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ExitLoop)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
AutoItWinSetTitle (http://www.autoitscript.com/autoit3/docs/functions/AutoItWinSetTitle.htm)($sUnique_Win & "__")
ControlSetText (http://www.autoitscript.com/autoit3/docs/functions/ControlSetText.htm)($sUnique_Win & "__", "", "Edit1", $iQueue + 1)
AutoItWinSetTitle (http://www.autoitscript.com/autoit3/docs/functions/AutoItWinSetTitle.htm)($sUnique_Win)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $iQueue = 0 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) 0
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) WinExists (http://www.autoitscript.com/autoit3/docs/functions/WinExists.htm)($hPrev_Queue_Win)
Sleep (http://www.autoitscript.com/autoit3/docs/functions/Sleep.htm)($iWait)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $iQueue
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)
нужно подключить библиотеку WinAPIEx.au3 (http://autoit-script.ru/index.php/topic,47.0.html).
Вот это «самое главное» следует указывать в самом начале, при созданий темы. »
сам это упусти вначале :)
спасибо
И я поправил (http://forum.oszone.net/post-1837063.html#post1837063).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.