Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Смена текущего тикера через AutoIt скрипт Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Khan



Зарегистрирован: 10.05.2012
Сообщения: 29

СообщениеДобавлено: Пн Ноя 05, 2012 3:11 pm Ответить с цитатой Вернуться к началу

Видел тут пару темок про автоматизацию с использованием AutoIt, значит аутоитчики есть . Сейчас написал такой код для смены текущего тикера. Но, так как он завязан на определение координат окошка, то не универсален.

Код:
WinActivate("AmiBroker")
MouseClick("left", 375, 65)
Send("AAPL_eod")
Send("{ENTER}")


Если кто решал подобную проблему, то подскажите как это сделать через элементы управления.
Посмотреть профиль Отправить личное сообщение
user_1024



Зарегистрирован: 17.12.2011
Сообщения: 7
Откуда: Москва

СообщениеДобавлено: Пн Ноя 19, 2012 12:35 pm Ответить с цитатой Вернуться к началу

Код:
#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

СообщениеДобавлено: Пн Ноя 19, 2012 2:45 pm Ответить с цитатой Вернуться к началу

По моему это гораздо проще сделать с помощью AmiBroker OLE

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Khan



Зарегистрирован: 10.05.2012
Сообщения: 29

СообщениеДобавлено: Пн Ноя 19, 2012 9:10 pm Ответить с цитатой Вернуться к началу

Спасибо, буду разбираться. У меня сейчас все проще написано, но и возможностей меньше.

OLE - в смысле через COM, когда создаешь broker.application и т.п.? (сорри, я в терминологии не силен). Я там не смог нажать кнопку подтверждения запуска оптимизации. Когда запускаешь ген оптимизацию методом optimize (насколько я помню), то выскакивает окошко - "Надо сделать 100500 запусков. Ок или Не ок". Вообщем, я это не победил.

Получается, что AutoIt, который я знаю более-менее, хреново работает с COM, но жмет кнопку, а WScript, который я знаю плохо, у меня не нажимает кнопку. Вот такая проблема. Пришлось через работу с интерфейсом делать.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen