Что нового

[Автоматизация] Как совместить два цикла

ИноЙ

Новичок
Сообщения
7
Репутация
0
Здравствуйте. Подскажите, пожалуйста, как совместить 2 цикла с функциями, которые должны вызываться по хоткею, в 1 скрипт или разделить эти 2 цикла на 2 скрипта и скомпилировать их в 1 exe файл, но чтобы иконка AutoIt в трее была только одна?

Код:
HotKeySet("!z", "_START") ;Клавиша Alt+Z для запуска
HotKeySet("!x", "_END") ;Клавиша Alt+X для выхода
Break (0)

While 1
    Sleep(10)
WEnd


Func _START()
   MsgBox(0+64+4096, "", "Сообщение")
    While 1
        MouseClick ( "primary", координата x, координата y )
        Sleep(7000) 
        Send ("{клавиша}")
        Sleep(215000)
    WEnd
EndFunc

Func _END()
   MsgBox(0+64+4096, "", "Сообщение")
    Exit
 EndFunc


Код:
HotKeySet("!v", "_1") ;Клавиши Alt+V для запуска 
HotKeySet("{LCTRL}v", "_2") ;Клавиши Ctrl+V для выхода
Break (0)

While 1
    Sleep(10)
WEnd

Func _1()
   MsgBox(0+64+4096, "", "Сообщение")
   While 1
	  $coord = PixelSearch (координаты,цвет)
	  if Not @error Then
	  Send ("!{Клавиша}")
	  Exit
	  EndIf
   WEnd
EndFunc

Func _2()
   MsgBox(0+64+4096, "", "Сообщение")
   Exit
EndFunc


Если написать их в 1 скрипт, то работает или одна или другая функция.
AdlibRegister не использую,так как надо чтобы вызов функции и ее завершение были по хоткею.
 
Автор
И

ИноЙ

Новичок
Сообщения
7
Репутация
0
Посидел,подумал,погуглил пришел к другому вопросу-если сделать так:
1.Скомпилировать скрипты в раздельные exe
2.Написать третий скрипт и скомпилировать его в exe(В нем будет задан запуск первых двух)
В итоге получается 3 exe-шника. Как сделать,чтобы первые два нельзя было запустить кликнув на них, а только из третьего(главного)
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
ИноЙ
только если эти два будут внутри первого.
для этого есть команда
Код:
FileInstall

но это уже другая тема. в одной теме два вопроса не хорошо :smile:
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
ИноЙ
Как вариант добавить в начало отдельных exe
Код:
If $CmdLine[0]=0 Then Exit

А третий скрипт должен будет запускать эти exe с каким-то ключём

З.Ы. А лучше вообще запихнуть 2 exe в один и в зависимости от ключа запускать тот или иной цикл
 

Pelerin

Осваивающий
Сообщения
81
Репутация
23
Вот по-экспериментировал... Вот что получилось:
Код:
#include <File.au3>
HotKeySet("!a", "Sub_1") ;Клавиши Alt+a для запуска 
HotKeySet("!b", "Sub_2") ;Клавиши Alt+b для выхода
HotKeySet("{ESC}", "MyExit") ;Клавиши Ctrl+V для выхода
$tf1=StringTrimRight(_TempFile(), 4)&'.exe'
$tf2=StringTrimRight(_TempFile(), 4)&'.exe'
$tp1=StringSplit($tf1, '\')
$tp2=StringSplit($tf2, '\')

While 1
    Sleep(10)
WEnd

Func Sub_1()
	If Not FileExists($tf1) Then FileInstall("Test_03.sub1.exe", $tf1); сюда подставить имя под-файла exe с функцией вместо Test_03.sub1.exe
	Switch ProcessExists ($tp1[$tp1[0]])
		Case True
			ProcessClose ($tp1[$tp1[0]])
		Case False
			Run ($tf1)
	EndSwitch
EndFunc

Func Sub_2()
	If Not FileExists($tf2) Then FileInstall("Test_03.sub2.exe", $tf2); сюда подставить имя под-файла exe с функцией вместо Test_03.sub2.exe
	Switch ProcessExists ($tp2[$tp2[0]])
		Case True
			ProcessClose ($tp2[$tp2[0]])
		Case False
			Run ($tf2)
	EndSwitch
EndFunc

Func MyExit()
	ProcessClose ($tp1[$tp1[0]])
	ProcessClose ($tp2[$tp2[0]])
	FileDelete ($tf1)
	FileDelete ($tf2)
	Exit
EndFunc
Код:
#NoTrayIcon
While 1
	ToolTip (@ScriptName&': фунциклирую...', 1, 1)
	Sleep (250)
WEnd
Код:
#NoTrayIcon
While 1
	ToolTip (@ScriptName&': фунциклирую...', 1, 25)
	Sleep (250)
WEnd


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

Подскрипт запускается и останавливается по нажатию одной и той же комбинации
 

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Код:
HotKeySet("!z", "_START") ;Клавиша Alt+Z для запуска
HotKeySet("!x", "_END") ;Клавиша Alt+X для выхода
HotKeySet("!v", "_1") ;Клавиши Alt+V для запуска
HotKeySet("{LCTRL}v", "_2") ;Клавиши Ctrl+V для выхода
Break (0)

While 1
    Sleep(10)
WEnd

Func _START()
   MsgBox(0+64+4096, "", "Сообщение")
    While 1
        MouseClick ( "primary", координата x, координата y )
        Sleep(7000)
        Send ("{клавиша}")
        Sleep(215000)
    WEnd
EndFunc

Func _END()
   MsgBox(0+64+4096, "", "Сообщение")
    Exit
 EndFunc

Func _1()
   MsgBox(0+64+4096, "", "Сообщение")
   While 1
      $coord = PixelSearch (координаты,цвет)
      if Not @error Then
      Send ("!{Клавиша}")
      Exit
      EndIf
   WEnd
EndFunc

Func _2()
   MsgBox(0+64+4096, "", "Сообщение")
   Exit
EndFunc
 
Верх