Что нового

[Данные, строки] Корректное объединение двух частей кода

Maksus

Новичок
Сообщения
6
Репутация
0
Доброго времени суток. Не получается корректно объединить несколько частей кода.
Имеется код для вызова окна джаббера из трея.
Код:
#include <GuiToolbar.au3>

Global $tray, $search = "Spark"

$tray = ControlGetHandle("[class:Shell_TrayWnd]", "", "ToolbarWindow321")
If FindClick($search) Then Exit

ControlClick("[class:Shell_TrayWnd]", "", "Button1")
$tray = ControlGetHandle("[class:NotifyIconOverflowWindow]", "", "ToolbarWindow321")
If Not FindClick($search) Then MsgBox(0, "", "Кнопка с текстом '" & $search & "' не найдена", 7)

Func FindClick($text)
  For $i = 0 To _GUICtrlToolbar_ButtonCount($tray) - 1
    If StringInStr(_GUICtrlToolbar_GetButtonText($tray, _GUICtrlToolbar_IndexToCommand($tray, $i)), $text) > 0 Then
      _GUICtrlToolbar_ClickIndex($tray, $i)
      Return 1
    EndIf
  Next
  Return 0
EndFunc

Который я пытаюсь соединить с кодом для выполнения операций с этим окном.
Код:
If ProcessExists("notepad.exe") Then
    MouseClick("left",47, 72, 2)
	MouseClick("left",52, 181, 2)
	EndIf
	WinSetState("Spark", "", @SW_MINIMIZE )
ProcessWaitClose ("notepad.exe" )
WinSetState("Spark", "", @SW_MAXIMIZE )
 MouseClick("left",47, 72, 2)
 MouseClick("left",60, 112, 2)
 WinSetState("Spark", "", @SW_MINIMIZE )

При непосредственном объединении происходит ошибка с операторам, а при вставке через #include выполняется только первая часть кода.
Помогите разобраться.
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,444
Maksus
пытаюсь соединить с кодом
Каким образом? Верхний код кликает иконку в трее, нижний - кликает по координатам. В какой последовательности должны работать скрипты? Или один скрипт должен работать внутри другого?
 
Автор
Maksus

Maksus

Новичок
Сообщения
6
Репутация
0
InnI сказал(а):
Maksus
пытаюсь соединить с кодом
Каким образом? Верхний код кликает иконку в трее, нижний - кликает по координатам. В какой последовательности должны работать скрипты? Или один скрипт должен работать внутри другого?
Добрый день. Спасибо за ответ. Задумка в том, что бы при запуске notepade.exe скрипт активировал окно чата и затем совершал некоторые действия в нем(например смена статуса - клик по координатам). Изначально я думал о вставке кода клика в трее, в тело основного кода. Но сейчас не получается никаким образом это реализовать, поэтому согласен на что угодно. даже без ProcessExists, просто через Sleep
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,444
Maksus
Надеюсь, я правильно понял вашу задумку
Код:
#include <GuiToolbar.au3>

While Sleep(100)
  ProcessWait("notepad.exe")
  SparkMaximize()
  MouseClick("left", 47, 72)
  MouseClick("left", 60, 180) ; по телефону
  WinClose("Spark")
  ProcessWaitClose("notepad.exe")
  SparkMaximize()
  MouseClick("left", 47, 72)
  MouseClick("left", 60, 110) ; в сети
  WinClose("Spark")
WEnd

Func SparkMaximize()
  Local $tray = ControlGetHandle("[class:Shell_TrayWnd]", "", "ToolbarWindow321")
  If Not FindClick($tray, "Spark") Then
    ControlClick("[class:Shell_TrayWnd]", "", "Button1")
    $tray = ControlGetHandle("[class:NotifyIconOverflowWindow]", "", "ToolbarWindow321")
    If FindClick($tray, "Spark") Then WinSetState("Spark", "", @SW_MAXIMIZE)
  Else
    WinSetState("Spark", "", @SW_MAXIMIZE)
  EndIf
EndFunc

Func FindClick($hTB, $text)
	For $i = 0 To _GUICtrlToolbar_ButtonCount($hTB) - 1
		If StringInStr(_GUICtrlToolbar_GetButtonText($hTB, _GUICtrlToolbar_IndexToCommand($hTB, $i)), $text) > 0 Then
			_GUICtrlToolbar_ClickIndex($hTB, $i)
			Return 1
		EndIf
	Next
	Return 0
EndFunc   ;==>FindClick

OffTopic:
Вы бы выбрали себе клиент с возможностью смены статуса при помощи горячих клавиш ;)
 
Верх