Запуск quik, авторизация, включение экспорта и т.д. с AmiSharp
Как в случае использования AmiSharp автоматически запустить терминал QUIK, авторизоваться, включить DDE экспорт, проверить наличие связи и остальное?
В качестве примера - фрагмент реального скрипта. В нем используется некоторое количество функций, которые здесь не приведены. Названия этих функций говорят сами за себя, не составит труда их написать.
procedure StartDDE(path)
{
mutant.SendKeysByClass(path + "info.exe","^~S^~L","InfoClass");
}
// Подготовка к работе
function Initialize()
{ local Can_Start;
// Нормализуем каталог QUIK - удаляем info.exe, если есть и добавляем конечный слеш
if (StrToLower(StrRight(QUIK_Path,8)) == "info.exe")
QUIK_Path = StrLeft(QUIK_Path,StrLen(QUIK_Path)-8);
if (StrRight(QUIK_Path,1) != "\\")
QUIK_Path += "\\";
// Запускаем Quik. Запускаем его только один раз
Can_Start = mutant.IsProcessStarted(QUIK_Path + "info.exe") == "1";
if (!Can_Start AND StaticVarGetText("AttemtToStartQUIK") != "Yes")
{ StaticVarSetText("AttemtToStartQUIK","Yes");
write_log("Запуск терминала QUIK");
if (mutant.StartProcess(QUIK_Path + "info.exe",QUIK_Path) != "1")
error(mutant.GetErrorName());
}
// Идентифицируемся, если известны пароль и логин
if (QUIK_Login != "" AND QUIK_Password != "" AND mutant.IsWindowExists(QUIK_Path + "info.exe","Идентификация пользователя") == "1")
{ write_log("Идентификация QUIK");
mutant.SendKeysByTitle(QUIK_Path + "info.exe", QUIK_Login+"{TAB}"+QUIK_Password+"{ENTER}", "Идентификация пользователя");
}
// Проверка связи Trans2Quik.dll и квика
if (Can_Start)
if (mutant.QuikIsDLLConnected() == "0")
{ write_log("Подключаем Trans2Quik");
if (mutant.QuikConnect(QUIK_Path) == "0")
{ error(mutant.GetErrorName());
Can_Start = False;
}
}
// Проверка связи с сервером
if (Can_Start AND mutant.QuikIsConnected() == "0")
{ error("Нет соединения с брокером");
Can_Start = False;
}
// Загружаем таблицы, экпортируемые по DDE
if (Can_Start)
if (mutant.IsTableExists(TTP_Table) == "0")
{ error("Отсутствует экспорт таблицы текущих параметров " + TTP_Table+ " по DDE");
write_log("Включаем трансляцию DDE");
StartDDE(QUIK_Path);
Can_Start = False;
}
return Can_Start;
}
