Что нового

Как работать с пунктами MDI меню в программе ?

astanid

Новичок
Сообщения
38
Репутация
0
Есть программа расчета эл. сетей. скачать можно по ссылке http://www.rastrwin.ru/download/Files/Rustab25790.exe
пароль на установку Stab-007, лицензия в данном случае не нужна
нужно скрипт написать открывающий ряд файлов и сохраняющих их через меню Файлы - Экспорт - Мустанг - УР

WinMenuSelectItem не работает, более того даже комбинация ctrl+O из скрипта не работает :( хотя с клавиатуры можно только открыть файл, не экспортировать
Код:
$hWnd = WinWait('[TITLE:Rustab]')
WinActivate($hWnd)
;send("{LCTRL}+O")
_dbg($hWnd)

WinMenuSelectItem($hWnd, "", "Файлы", "Загрузить")

немного погуглил - дело очевидно в том что WinMenuSelectItem работает только с полноценным меню. тут же Class: WTL_MDICommandBar
готового решения я не нашел :( как с этим работать ?

Вот так получается пункт меню Файлы открыть. но как потом с выпавшим списком обращаться ?

ControlClick($hWnd, "","[CLASS:WTL_MDICommandBar; INSTANCE:1]", "Primary", 1, 23, 9 )
 

Вложения

  • Clipboard04.jpg
    Clipboard04.jpg
    126.4 КБ · Просмотры: 7
Автор
A

astanid

Новичок
Сообщения
38
Репутация
0
Alofa сказал(а):
OffTopic:
astanid сказал(а):
... скачать можно по ссылке...
А пароль для установки?
так строчкой ниже же :smile: пароль на установку Stab-007

я попробовал ControlClick использовать send курсов вниз и ентер чтобы включить нужный пункт меню. работает почему-то через раз :( хотя я задержек навставлял от души где только мог :(
Код:
$file_path="G:\!устройчивостьRustab\готово\Антоновский\"
$file_name="АРВ_isx.rg2"


 Local $hWnd = WinActivate('[TITLE:Rustab]')

if $hWnd=0 then
$hWnd = Run("C:\Program Files (x86)\RastrWin\Rustab.exe")
sleep(1000)
$hWnd = WinWait('[TITLE:Rustab]')
Else
$hWnd = WinActivate('[TITLE:Rustab]')
endif

;WinSetState($hWnd, "", @SW_MAXIMIZE)


;send("{LCTRL}+o")

_dbg($hWnd)

sleep(500)
;закрываем все окна
ControlClick($hWnd, "","[CLASS:WTL_MDICommandBar; INSTANCE:1]", "Primary", 1, 324, 11 )
send("{DOWN 4}")
send("{ENTER}")



;открываем файл
ControlClick($hWnd, "","[CLASS:WTL_MDICommandBar; INSTANCE:1]", "Primary", 1, 23, 9 )
send("{DOWN 2}"& "{enter}")

$h1 = WinWait('[TITLE:Открыть]')

ControlSetText($h1, "Открыть", "[CLASSNN:Edit1]", $file_path&$file_name)
ControlSend($h1, "Открыть", "[CLASSNN:Edit1]", "{enter}")

;расчет
;send("{F5}")
;sleep(100)

;открываем таблицу Ветвей
$r=ControlClick($hWnd, "","[CLASS:WTL_MDICommandBar; INSTANCE:1]", "Primary", 1, 166, 11 )


_dbg("таблица ветвей" & $r)
sleep(500)
send("{DOWN 6}")
send("{RIGHT}")
send("{ENTER}")

sleep(500)
Exit

;пункт меню таблица
ControlClick($hWnd, "","[CLASS:WTL_MDICommandBar; INSTANCE:1]", "Primary", 1, 215, 11 )

sleep(500)
send("{DOWN 7}")
send("{ENTER}")

;нужно выполнить гр. корретировку
$h1 = WinWait('[TITLE:Групповой расчет параметра]')
ControlSetText($h1, "", "[CLASS:Edit; INSTANCE:3]", "ktr")
ControlSetText($h1, "", "[CLASS:Edit; INSTANCE:1]", "1/ktr")
ControlClick($h1, "", "[CLASS:Button; INSTANCE:1]")
exit

;экспорт в файл мустанга


ControlClick($hWnd, "","[CLASS:WTL_MDICommandBar; INSTANCE:1]", "Primary", 1, 23, 9 )
send("{DOWN 9}")
send("{RIGHT}")
send("{DOWN 2}")
send("{RIGHT}")
send("{ENTER}")

;имя для файла мустанга
$ssp_file=StringReplace($file_name,".rg2",".ssp")

;сохраняем SSP файл
$h1 = WinWait('[TITLE:Открыть]')
_dbg($ssp_file)
ControlSetText($h1, "Открыть", "[CLASSNN:Edit1]", $file_path&$ssp_file)
ControlSend($h1, "Открыть", "[CLASSNN:Edit1]", "{enter}")
send("{ENTER}") ;подтверждение

Func _dbg($sMsg)
    If @Compiled Then
        DllCall("kernel32.dll", "none", "OutputDebugString", "str", $sMsg)
    Else
        ConsoleWrite($sMsg & @CRLF)
    EndIf
EndFunc   ;==>_dbg

загружаемый файл прилагаю для чистоты эксперимента


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

В принципе я понял в чем дело :smile: курсор мыши иногда попадала на элементы управления и мешал навигации
уводить его нужно в 0,0 координат предварительно и проблемы исчезают
 

Вложения

  • АРВ_isx.rar
    15.1 КБ · Просмотры: 1
Верх