Что нового

Объединение двух циклов

ANDYANDREY

Новичок
Сообщения
20
Репутация
0
Всем привет, прошу помощи в решении, как можно объединить цикл? Пробовал по всякому, в гугле уже все прогуглил, тут тоже решения не нашел.

Код:
While 1
Run('E:\SOFTWARE\UT\UT.exe')
ProcessWait("MWfare.exe")
ProcessClose('UT.exe')
ProcessWaitClose ("MWfare.exe")
WEnd

While 1
ProcessWaitClose ("start.exe")
Run('start.exe')
WEnd
WEnd
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Чтобы объединить циклы потребуется функции ProcessWait и ProcessWaitClose заменить на ProcessExists, и оператором If проверять существование процесса.

OffTopic:
Но можно не вносить кардинальные изменения в основной код, перенеся второй цикл в фоновый поток и собрав программу в среде PureBasic 5.24 AutoIt которую недавно видел на известном трекере
Код:
XIncludeFile #PB_Compiler_Home+"Include\PureAutoIt.pbi"
UseModule PureAutoIt

Procedure Thread(*Value)
  While 1
    ProcessWaitClose("start.exe")
    Run("start.exe")
  Wend
EndProcedure

CreateThread(@Thread(), 0)

While 1
  Run("E:\SOFTWARE\UT\UT.exe")
  ProcessWait("MWfare.exe")
  ProcessClose("UT.exe")
  ProcessWaitClose("MWfare.exe")
Wend
 
Автор
A

ANDYANDREY

Новичок
Сообщения
20
Репутация
0
Prog сказал(а):
Чтобы объединить циклы потребуется функции ProcessWait и ProcessWaitClose заменить на ProcessExists, и оператором If проверять существование процесса.

OffTopic:
Но можно не вносить кардинальные изменения в основной код, перенеся второй цикл в фоновый поток и собрав программу в среде PureBasic 5.24 AutoIt которую недавно видел на известном трекере
Код:
XIncludeFile #PB_Compiler_Home+"Include\PureAutoIt.pbi"
UseModule PureAutoIt

Procedure Thread(*Value)
  While 1
    ProcessWaitClose("start.exe")
    Run("start.exe")
  Wend
EndProcedure

CreateThread(@Thread(), 0)

While 1
  Run("E:\SOFTWARE\UT\UT.exe")
  ProcessWait("MWfare.exe")
  ProcessClose("UT.exe")
  ProcessWaitClose("MWfare.exe")
Wend

Я может не совсем понимаю, но делаю как Вы написали, даже компилироваться не хочет, можеб есть какие-то другие способы?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
ANDYANDREY

Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.
 
Автор
A

ANDYANDREY

Новичок
Сообщения
20
Репутация
0
Помогите кто-нибудь, я уже не знаю, что и делать. Можно ли как то эти два кода сделать, что бы они постоянно были в цикле и выполнялись?
 
Автор
A

ANDYANDREY

Новичок
Сообщения
20
Репутация
0
Prog сказал(а):
ANDYANDREY [?]
Как делаете?


Все успешно скомпилировалось через Pure Basic Autoit, вот только при запуске не запускается приложение по адресу Run("E:\SOFTWARE\UT\UT.exe"), в чем может быть проблема?

Помогите пожалуйста изменить сам скрипт на Autoit, если это возможно. По отдельности эти два кода работают на ура, а вместе самый верхний работает, а второй нет, вот мне нужно объеденить.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
ANDYANDREY [?]
при запуске не запускается приложение по адресу Run("E:\SOFTWARE\UT\UT.exe"), в чем может быть проблема?
Может в том что такой путь отсутствует?


Помогите пожалуйста изменить сам скрипт на Autoit, если это возможно.
Код:
While 1

  if ProcessExists("MWfare.exe") = 0 and ProcessExists("UT.exe") = 0 Then
	 Run('E:\SOFTWARE\UT\UT.exe')
  elseif ProcessExists("MWfare.exe") and ProcessExists("UT.exe") Then
	 ProcessClose('UT.exe')
  endif

  if ProcessExists("start.exe") = 0 Then
    Run('start.exe')
  endif

  sleep(10)

WEnd
 
Автор
A

ANDYANDREY

Новичок
Сообщения
20
Репутация
0
Prog сказал(а):
ANDYANDREY [?]
при запуске не запускается приложение по адресу Run("E:\SOFTWARE\UT\UT.exe"), в чем может быть проблема?
Может в том что такой путь отсутствует?

Нет путь правильный. А вот этот код, который Вы мне прислали, при запуске запускается программу по адресу E:\SOFTWARE\UT\UT.exe и закрывает, потом снова открывает и закрывает скрытно, итак постоянно. Мне нужно, что бы она открывалась, конечно попробую разобраться, но голова уже кипит, весь день маюсь) Заранее спасибо.
 
Автор
A

ANDYANDREY

Новичок
Сообщения
20
Репутация
0
Кстати в Pure Basic Autoit программа уже запускается, только при открытии программы MWfare.exe, программа UT.exe не закрывается.


Добавлено:
Сообщение автоматически объединено:

Prog сказал(а):
Отредактировал код.

Ошибку пишет, Error: Error in expression
Убрал "and" там где стоял 0, ошибка перестала появляться, но при открытии MWfare.exe, программа UT.exe не завершается
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
ANDYANDREY
Как нужно цитировать в трёх действиях!!!

Делай раз!


Делай два!


Делай три!


Сложно?
 
Автор
A

ANDYANDREY

Новичок
Сообщения
20
Репутация
0

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
ANDYANDREY [?]
У вас на "Делай раз" не работает почему-то
Ставим курсор в начало выделяемого участка. Зажимаем ЛКМ и тянем до конца выделяемого участка. Отпускаем ЛКМ. И-и-и...
 

vovsla

Осваивающий
Сообщения
607
Репутация
36
У меня тоже трудности с цитатами
"Делай раз!" не работает в Firefox 53.03
А как получить текст первой строки на шаге "Делай два!" не понятно

А по поводу кода можно попробовать так
Код:
AdlibRegister('loop1')
AdlibRegister('loop2')

While Sleep(100)
WEnd

Func loop1()
	Run('E:\SOFTWARE\UT\UT.exe')
	ProcessWait("MWfare.exe")
	ProcessClose('UT.exe')
	ProcessWaitClose ("MWfare.exe")
EndFunc

Func loop2()
	ProcessWaitClose ("start.exe")
	Run('start.exe')
EndFunc


Хотя, и так должно работать
Код:
While Sleep(100)
	If Not ProcessExists('MWfare.exe') Then
		Run('E:\SOFTWARE\UT\UT.exe')
		ProcessWait('MWfare.exe')
		ProcessClose('UT.exe')
	EndIf
	
	If Not ProcessExists('start.exe') Then Run('start.exe')
WEnd


В крайнем случае можно сделать 2 утилиты :smile:
 
Верх