Что нового

[Мышь, клавиатура] Имитация ручного обновления папки из хранилища SVN

Za_Dolber

Новичок
Сообщения
2
Репутация
0
Всем привет!
Прошу помощи. Задача - сделать эмуляцию действий над папкой.

То есть нужно в проводнике открыть диск, папку, в подпапке ПКМ на папку с определённым именем, подождать пока откроется контекстное меню, выбрать из контекстного меню нужный пункт меню, подожать пока произойдёт действие которое вызывает клик по менюшке, нажать кнопку "Ок" в выскочившем окне.

Проблема с тем, что выделил красным цветом.
Конкретно нужно сделать SVN Update для определённой папки.
Использование библиотек работы с SVN для AutoIt не катит - нужно именно вручную.
Средства CMD не катят по той же причине.

Единственным решением пока видится использование Send("{DOWN}{DOWN}{DOWN}") до нужного пункта, но не катит, т.к. количество пунктов может отличаться на разных компьютерах. Хотелось бы отловить нужный пункт по фразе, ну пусть будет "SVN Update".

Пока что я способен только на вот это вот:
Код:
If FileExists("D:\%Filepath%\rebuild.bat") Then ;если существует скрипт для пересборки
    MsgBox(4096, "", "Скрипт обновления существует") ; отладочное
	FileOpen ( "D:\") ; и не знаю как дальше правильно

	WinWait("Локальный диск (D:)","") ; 
	 ;Тут магический выбор нужной папки
	Send("{APPSKEY}") ; открытие контекстного меню на нужной папке
	 ;тут определение нужного пункта меню и клик по нему
	WinWait("Update Finished!","")
	 ;тут возможно ControlClick("Update Finished!","",'[CLASS:Button; INSTANCE:11]' )
Else
    MsgBox(4096, "", "Скрипта пересборки не существует")
EndIf


http://autoit-script.ru/index.php/topic,4443.0.html - читал, немножко не мой случай

UPD:19:15 02.04.2014
Поправил тэги обрамления кода
 

InnI

AutoIT Гуру
Сообщения
4 368
Репутация
1 175
Za_Dolber
Сначала редактируем теги сообщения в соответствие с п.11
Потом будут ответы.

Код:
#include <GuiMenu.au3>

$Path = "D:\SVN\"
$Dir = "Проект 23"
$Item = "SVN Update"

Run("explorer.exe " & $Path & $Dir)
If Not WinWaitActive($Dir, "", 5) Then
  MsgBox(0, @ScriptName, "Окно не найдено: " & $Path & $Dir)
  Exit
EndIf
Send("{APPSKEY}")
$PopUp = _SendMessage(WinWait("[class:#32768]"), 0x01E1)
$Idx = _GUICtrlMenu_FindItem($PopUp, $Item)
If $Idx = -1 Then
  MsgBox(0, @ScriptName, "Пункт меню не найден: " & $Item)
  Exit
EndIf
Do
  Send("{DOWN}")
  If _GUICtrlMenu_GetItemHighlighted($PopUp, $Idx) Then ExitLoop
Until 0
Send("{ENTER}")
WinClose(WinWait("Update Finished"))
Send("!{F4}")
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
к чему эти танцы? в любом приличном svn есть ком-строка. через нее и надо работать.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
InnI [?]
Видимо, причина очень серьёзная.
упс. не дочитал до конца :smile:
в некоторых конторах, действительно, комстроку блокируют.
 
Верх