Показать сообщение отдельно
Старый 16.06.2018, 16:19   #3444
duzzy
Гуру
 
Регистрация: 01.06.2013
Регион: 78, 98
Машина: SUBARU Impreza WRX
Сообщений: 1,766
duzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond repute
По умолчанию

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);
}; 
duzzy вне форума   Ответить с цитированием