Что нового

[Ошибки] Крашит Программу из-за кода.RaidCall

kadi

Новичок
Сообщения
5
Репутация
0
Привет,Не знаю почему но у меня крашит RaidCall.Посмотрите пожалуйста может я что-то не так сделал.Бывает он откроет RaidCall,зайдет в группу и сразу крашит.И опять запускает RaidCall и входит в группу.Не знаю почему он входит 2 раз.Ведь 2 часть кода рассматривается только когда Raidcall запущен.Может RaidCall не успевает закрыться,а это условие уже пройдено[if ProcessExists($process) then].Не знаю.Причем после 2 запуска не крашит.У меня есть 2 варианта либо крашит из-за ошибки в конце 1 кода.Или начала 2.
Код:
$process="raidcall.exe"
$text = WinGetText("RaidCall")
;"Первый код"
if Not ProcessExists($process) then    
   Run("C:\Program Files (x86)\RaidCall\raidcall.exe", "", @SW_HIDE)
    Sleep(5000)
     Send("{ENTER}");Enter нуен если вдруг программа не выполнила автовход.если вошла и нажать Enter ничего не произойдет.
      Sleep(12000) 
	   WinActivate("[CLASS:ATL:007C3BC8]","") ;Это чтоб открыть группу
	    Sleep(500)
         MouseClick('left',677,385,1,5);Это чтоб открыть группу
	      Sleep(1000)
           MouseClick('left',863, 365,1,10);Это чтоб открыть группу
	 EndIf

"Второй код"
if ProcessExists($process) then   ;Если процесс запущен
 If Not StringInStr($text, "В очередь") Then ;Но я не в группе
  WinActivate("[CLASS:ATL:007C3BC8]","");Закрывает RaidCall
   Sleep(500)
     WinClose("[CLASS:ATL:007C3BC8]","");Закрывает RaidCall
	  Sleep(1000)
         WinClose("[CLASS:ATL:007C3BC8]","");Закрывает RaidCall.2 раз надо если Raid call вывел сообщение что интернет пропал.Тогда уже надо 2 окна закрывать.
	      Sleep(1000)
	   Run("C:\Program Files (x86)\RaidCall\raidcall.exe", "", @SW_HIDE)
	    Sleep(5000)
		 Send("{ENTER}");Enter нужен если вдруг программа не выполнила автовход.если вошла и нажать Enter ничего не произойдет.
          Sleep(12000) 
	       WinActivate("[CLASS:ATL:007C3BC8]","");Это чтоб открыть группу
	        Sleep(500)
		     MouseClick('left',677,385,1,20);Это чтоб открыть группу
	          Sleep(1000)
               MouseClick('left',863, 365,1,10);Это чтоб открыть группу
		  EndIf
	   EndIf

Этот скрип смотрит Запущена ли программа,если нет то запускает и входит в группу.Если запущена и не в группе,то закрывает программу и повторяет выше сказанное.
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Код:
#RequireAdmin

$Dir = @ProgramFilesDir&'\Raidcall\raidcall.exe'
$Proc = 'raidcall.exe'

If Not ProcessExists($Proc) Then ; Проверка процесса (Если нет)
	Run($Dir) ; Запуск
	ProcessWait($Proc) ; Ждем запуск
	WinWaitActive('RaidCall') ; Ждем окно
	Sleep(3000)
	Send('{Enter}')
	Sleep(15000) ; Ждем пока пройдет загрузка
	WinActivate('RaidCall')
	MouseClick('Left',184,150,1,30) ; Жмем по списку
	Sleep(1000)
	MouseClick('Left',432,133,2,30) ; Выбираем группу
Else ; Проверка процесса (Если да)
	WinActivate('RaidCall')
	If Not WinExists('RaidCall','This channel') Then ; Если не в группе
		ProcessClose($Proc) ; Загрыть процесс
		ProcessWaitClose($Proc) ; Ждем закрытия
		Run($Dir)
		ProcessWait($Proc)
		WinWaitActive('RaidCall')
		Sleep(3000)
		Send('{Enter}')
		Sleep(15000)
		MouseClick('Left',184,150,1,30)
		Sleep(1000)
		MouseClick('Left',432,133,2,30)
	Else ; Если в группе
		Exit
	EndIf
EndIf

Подставьте свои параметры и попробуйте. Скачал новую версию 5-9 минут назад, все работает.
 
Верх