Что нового

Одновременная работа двух и более функций

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Придется, придется. COM объект блокирует скрипт до своего завершения, а многопоточность AutoIt не поддерживает, ну никак.
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
вот весь скрипт... может быть я всетаки где то ошибаюсь..
скрипт без добавления функции прогресса. как есть..
 

bulldog5293

Знающий
Сообщения
172
Репутация
10
У меня тоже вопрос по поводу одновременная работа двух и более функций, можно ли в скрипте прописать что при одной функции вызывается одна функция, а при другой другая. К примеру одна заходит на сайт и производит и ищет одно(пример:пошли), если не вышла то другая ищет другое(пример: присоединяйтесь)
 

SANILA

Новичок
Сообщения
13
Репутация
2
Александр
в твоем случае т.к. прогресс ты имитируешь, я бы просто запускал какую-нибудь анимированную gif-ку и убирал её в конце основной функции
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Александр [?]
вот весь скрипт
Вот так примерно:

Код:
Func _Message()
	Local $sAppTitle, $sProgress_Src, $sTmp_File, $hFile
	
	$sAppTitle = @ScriptName & "_" & @AutoItPID
	AutoItWinSetTitle($sAppTitle)
	ControlSetText($sAppTitle, "", "Edit1", "Progress")
	
	$sProgress_Src = '#NoTrayIcon' & @CRLF
	$sProgress_Src &= 'ProgressOn("Progress", "Data", "", Default, Default)' & @CRLF
	$sProgress_Src &= '$iPrecent = 0' & @CRLF
	$sProgress_Src &= 'While ControlGetText("' & $sAppTitle & '", "", "Edit1") = "Progress"' & @CRLF
	$sProgress_Src &= '	ProgressSet($iPrecent)' & @CRLF
	$sProgress_Src &= '	$iPrecent += 5' & @CRLF
	$sProgress_Src &= '	If $iPrecent >= 100 Then $iPrecent = 0' & @CRLF
	$sProgress_Src &= '	Sleep(100)' & @CRLF
	$sProgress_Src &= 'WEnd' & @CRLF
	$sProgress_Src &= 'ProgressOff()' & @CRLF
	
	$sTmp_File = @TempDir & "\~au3_Progress.tmp"
	
	$hFile = FileOpen($sTmp_File, 2)
	FileWrite($hFile, $sProgress_Src)
	FileClose($hFile)
	
	Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sTmp_File & '"')
	
	$oIE = _IECreate(GUICtrlRead($Adress), 0, 0)

	If @error Then
		MsgBox(0, "Отчет", "Ошибка браузера или неверная ссылка")
		_IEQuit($oIE)
	Else
		$oForm = _IEFormGetCollection($oIE, 1)
		If @error Then
			MsgBox(0, "Отчет", "Сообщение не отправлено. Ссылка не верна или сервер не отвечает.")
			_IEQuit($oIE)
		ElseIf Not @error Then
			$oLogin = _IEFormElementGetObjByName($oForm, "vb_login_username")
			$oPass = _IEFormElementGetObjByName($oForm, "vb_login_password")
			_IEFormElementSetValue($oLogin, GUICtrlRead($Login))
			_IEFormElementSetValue($oPass, GUICtrlRead($Password))
			_IEFormSubmit($oForm, 1)
			_IELoadWait($oIE, 10000)
			$oMessage = _IEFormGetCollection($oIE, 4)
			$oText = _IEFormElementGetObjByName($oMessage, "message")
			If @error Then
				MsgBox(0, "Отчет", "Сообщение не создано.Логин или пароль не верен")
				_IEQuit($oIE)
			Else
				_IEFormElementSetValue($oText, GUICtrlRead($iMemo))
				_IEFormSubmit($oMessage, 1)
				MsgBox(0, "Отчет", "Cообщение отправлено")
				_IEQuit($oIE)
			EndIf
		EndIf
	EndIf
	
	ControlSetText($sAppTitle, "", "Edit1", "")
	FileDelete($sTmp_File)
	
	_Enable()
EndFunc
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
CreatoR [?]
Вот так примерно:
всетаки происходит создание временного источника .tmp. источника кода.. но это лучшее решение чем писать отдельный скрипт... так или иначе все воплотилось в одном...
спасибо..
 
Верх