Что нового

[Процессы] Как можно ускорить проверку "if" или команду "send"?

AndreySeVeN

Новичок
Сообщения
26
Репутация
0
Код:
While(1)
If $Run = 1 Then; читаем значение из адреса
  $Mem_Read = _MemoryRead('0x' & '001337ED' , $MemoryOpen)
  If ($Mem_Read > $mas[$i] - 30) And ($Mem_Read < $mas[$i] + 35) Then
	    If ($but[$i] = 4) Then
		 Send("{Ч down}")
		 Send("{С down}")
		 $i = $i + 1
		 Send("{Ч up}")
		 Send("{С up}")
		 ElseIf ($but[$i] = 0) Then
		 Send($aRed[Mod($na, 2)])
		 $i = $i + 1
		 $na+=1
		 ElseIf ($but[$i] = 8) Then
		 Send($aBlue[Mod($na, 2)])
		 $i = $i + 1
		 $na+=1
		 ElseIf ($but[$i] = 12) Then
		 Send("{Я down}")
		 Send("{М down}")
		 $i = $i + 1
		 Send("{Я up}")
		 Send("{М up}")
	  EndIf
  EndIf
  EndIf
WEnd


SEND работает ОООЧень медленно. Думаю это связано с целой кучей IF. Но как это можно ускорить?
 
Автор
A

AndreySeVeN

Новичок
Сообщения
26
Репутация
0
С помощью ToolTip нашел, что проблема в переменной $i
А именно
Код:
Func Reader()
  $Mem_Read = _MemoryRead('0x' & '00286E14' , $MemoryOpen)
  If ($Mem_Read > $mas[$i] +- 30) Then
	   ReaderButton($but[$i])
	   $i = $i + 1
	   Return
  EndIf
EndFunc

К $i не всегда прибавляется единица.
Что делать?


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

А нет! Оказывается с $i все идеально.
Не всегда Send отправляется


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

Вообще не понятно. Send еле еле отправляется. Можно сказать через раз работает.
Код:
Func ReaderButton($event)
If ($event = 4) Then
   Send("{Ч down}")
   Send("{С down}")
   Send("{Ч up}")
   Send("{С up}")
   Return
ElseIf ($event = 0) Then
   Send($aRed[Mod($na, 2)])
   $na+=1
   Return
ElseIf ($event = 8) Then
   Send($aBlue[Mod($na, 2)])
   $na+=1
   Return
ElseIf ($event = 12) Then
   Send("{Я down}")
   Send("{М down}")
   Send("{Я up}")
   Send("{М up}")
   Return
EndIf
EndFunc



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

Проблема решена. Долой send, да здравствует WinAPI
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
AndreySeVeN
Используй Switch вместо ElseIf
Код:
Switch $event
    Case 0
       Send("{М up}")
    Case 8
        Send("{М up}")
    Case 12
        Send("{М up}")
EndSwitch


разный стиль
Код:
$i = $i + 1
         $na+=1

почему бы не
Код:
$i += 1


AndreySeVeN [?]
SEND работает ОООЧень медленно
Оно работает мгновенно, при том не дожидается обработало ли окно переданное, и вполне может отправить в пустоту, если окно к примеру не успело обновится после получения первой порции.
 
Верх