seriousstas
Цитата:
fb.GetOutputDevices(); работал уже с версии 1.3 )
|
О спасибо

не знал, добавлю себе в сборку на 1.3, жаль что ДСП только для 1.4.
И я наконец вспомнил почему так не люблю пропихивать команды через запуск ехе-ки... как с фубаром.
Пример: если достаточно часто нажимать след.трек будут пропуски(когда плагин тестировал ловил кучу раз).
Так что я буду переходить на систему опроса переменных, как предлагал ранее.
Инфу отправлять и получать придется как не крути...
____________________________________________
Евген_21
Вот готовый вариант опроса икара с проверкой на работающий икар...
Можно прописать в любом месте любого МПС скрипта.
Для полноценной работы нужна библиотечка
автоита, ее нужно положить в папку
assemblies основной папки сборки... вот так...

Немного расписал где что и как))
//====================================
Свой код пописывать межу этих указателей...
//====================================
PHP код:
//--- get send info/commands iCarDS<->fb2k
var autoit_obj = new ActiveXObject("AutoItX3.Control");
var rr = undefined;
var rr_getinfo_timer = false;
var rr_obj_check_timer = false;
var rr_obj_check_timer_value = 5000; //--- таймаут проверки икара в мс, работает он или нет
var rr_getinfo_timer_value = 1000; //--- таймаут опроса переменных икара в мс
var track_pos = "";
rr_check(); //--- запуск проверки икара и создание объекта
//--- ниже в rr_get_send_info() прописываем то что будем получать/отправлять из икара
function rr_get_send_info() {
try {
//=================================================================================
//--- try{...} обработчик ошибок с зацикленной схемой проверки на работающий икар
//--- прописываем тут то что нужно получать отправлять в/из икар/а
//--- и выполняем какие то действия при получении нужной инфы
if (rr.getinfo("=$icar_slider_pos_set$") == 'true') { //--- если icar_slider_pos_set = true выполняем далее
rr.execute("setvar;icar_slider_pos_set;false"); //--- обнуляем переменную icar_slider_pos_set в false
track_pos = rr.getinfo("=$icar_slider_pos$"); //--- берем значение переменной icar_slider_pos которая содержит время перехода трека
fb.PlaybackTime = track_pos; //--- выставляем время трека в соответствии с положением слайдера икара
};
//=================================================================================
} catch (e) {
//--- catch(e){...} при получении ошибки она обрабатывается тут
tt('>>> iCarDS GetSendInfo() Error...'); //--- выводим сообщение об ошибке в консоль фубара
rr_getinfo_timer = false && rr_getinfo_timer.Dispose(); //--- гасим таймер
rr = undefined;
rr_obj_check_timer = window.CreateTimerInterval(rr_obj_check_timer_value); //--- запускаем таймер проверки процесса icards.exe
};
};
//-------------------------------------------------------------------------------------
//--- далее можно ничего не трогать, тут расположены функции проверки и старта таймеров
//-------------------------------------------------------------------------------------
function rr_check() {
if (icar_check()) {
rr_obj_check_timer = false && rr_obj_check_timer.Dispose();
rr = new ActiveXObject("RideRunner.sdk");
is_rr_on = true;
} else {
is_rr_on = false;
rr = undefined;
rr_obj_check_timer = window.CreateTimerInterval(rr_obj_check_timer_value);
};
is_rr_on ? rr_getinfo_timer = window.CreateTimerInterval(rr_getinfo_timer_value) : rr_getinfo_timer = false && rr_getinfo_timer.Dispose();
};
function icar_check() {
var ret_check = "";
ret_check = autoit_obj.ProcessExists("iCarDS.exe");
if (ret_check == 0) {
tt('>>> iCarDS not running...');
return false;
} else {
return true;
};
};
//--- если в скрипте уже есть функция on_timer(id)
//--- нужно просто перенести условия( if(...){...} ) в свою функцию из этого скрипта
function on_timer(id) {
if (rr_getinfo_timer && id == rr_getinfo_timer.ID) {
rr_get_send_info();
};
if (rr_obj_check_timer && id == rr_obj_check_timer.ID) {
rr_check();
};
};
function tt(t) {
fb.trace(t);
};