Автор |
Сообщение |
Khan
Зарегистрирован: 10.05.2012
Сообщения: 29
|
Видел тут пару темок про автоматизацию с использованием AutoIt, значит аутоитчики есть . Сейчас написал такой код для смены текущего тикера. Но, так как он завязан на определение координат окошка, то не универсален.
Код: |
WinActivate("AmiBroker")
MouseClick("left", 375, 65)
Send("AAPL_eod")
Send("{ENTER}") |
Если кто решал подобную проблему, то подскажите как это сделать через элементы управления. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
user_1024
Зарегистрирован: 17.12.2011
Сообщения: 7
Откуда: Москва
|
Код: |
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; Определяем хзендл editbox для символа
Local $hSymbolEdit = ControlGetHandle("AmiBroker", "", "[CLASS:RichEdit20A]")
; Вывод экранной формы ============================
Local $msg, $edt, $submit
GUICreate("Symbol", 320, 100, 350, 100)
$edt = GUICtrlCreateEdit("", 0, 0, 250, 100, $WS_VSCROLL)
$submit = GUICtrlCreateButton("Ok", 255, 0, 60, 100)
GUISetState()
; =================================================
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $submit
$text = GUICtrlRead($edt)
_WinWaitActivate("AmiBroker", "")
; Устанавливаем фокус на editbox
ControlFocus("", "", $hSymbolEdit)
; Послылаем в него символ
ControlSend ("", "", $hSymbolEdit, "{CTRLDOWN}A{CTRLUP}" & $text & "{ENTER}", 0)
ExitLoop
EndSelect
WEnd
; Функция активации окна
Func _WinWaitActivate($title,$text,$timeout=0)
WinWait($title,$text,$timeout)
If Not WinActive($title,$text) Then WinActivate($title,$text)
WinWaitActive($title,$text,$timeout)
EndFunc
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
По моему это гораздо проще сделать с помощью AmiBroker OLE |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Khan
Зарегистрирован: 10.05.2012
Сообщения: 29
|
Спасибо, буду разбираться. У меня сейчас все проще написано, но и возможностей меньше.
OLE - в смысле через COM, когда создаешь broker.application и т.п.? (сорри, я в терминологии не силен). Я там не смог нажать кнопку подтверждения запуска оптимизации. Когда запускаешь ген оптимизацию методом optimize (насколько я помню), то выскакивает окошко - "Надо сделать 100500 запусков. Ок или Не ок". Вообщем, я это не победил.
Получается, что AutoIt, который я знаю более-менее, хреново работает с COM, но жмет кнопку, а WScript, который я знаю плохо, у меня не нажимает кнопку. Вот такая проблема. Пришлось через работу с интерфейсом делать. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|