AXC_SetFilter - фильтр для Alarm Control
Александр Туманов; 1.3.02

Существует ли более подробное описание этой функции, чем то, которое дано во встроенном Help? В частности, не понятно как задать фильтр для нескольких классов или по времени (как написать - понятно, но реально не работает).


#pragma code("kernel32.dll");
void GetLocalTime(SYSTEMTIME* lpst);
#pragma code();

SYSTEMTIME time_from, time_to; //
BOOL ret;
MSG_FILTER_STRUCT Filter;
CMN_ERROR Error;

//Reset the filter struct memset
( &Filter, 0, sizeof( MSG_FILTER_STRUCT ) );

//Set the filter name strcpy
( Filter.szFilterName, "table");

Filter.dwFilter = MSG_FILTER_DATE | MSG_FILTER_DATE_FROM | MSG_FILTER_DATE_TO | MSG_FILTER_TIME | MSG_FILTER_TIME_FROM | MSG_FILTER_TIME_TO;
time_from.wYear = GetTagWord ("Year_from");
time_to.wYear = GetTagWord("Year_to");
time_from.wMonth = GetTagWord("Month_from");
time_to.wMonth = GetTagWord("Month_to");
time_from.wDay = GetTagWord("Day_from");
time_to.wDay = GetTagWord("Day_to");
time_from.wHour = GetTagWord("Hour_from");
time_to.wHour = GetTagWord("Hour_to");
time_from.wHour = GetTagWord("Minute_from");
time_to.wMinute = GetTagWord("Minute_to");
time_from.wSecond = GetTagWord("Second_from");
time_to.wSecond = GetTagWord("Second_to");

Filter.st[0] = time_from;
Filter.st[1] = time_to;

ret = AXC_SetFilter("alarm","table",&Filter,&Error);


Re: AXC_SetFilter - фильтр для Alarm Control
Alexis; 1.3.02

Описание в ODK такое же как и во встроенном хелпе.

Я не пробовал задавать фильтр на Alarm Control, но пробовал в своих софтинках (надо было сбрасывать сообщения за определенный промежуток времени, но в читабельном виде в отличие от MSRTBackup). Фильтрация по времени работает нормально (заполняем st[] и dwFilter=MSG_FILTER_DATE|MSG_FILTER_TIME). Для классов пока не пробовал (позже займусь :), но вроде надо так заполнять: dwFilter|=MSG_FILTER_CLASS
dwMsgClass= устанавливай бит по номеру класса (Alarm=0x01 Warning=0x02 и тд по ИЛИ)и заполняй соответственно
dwMsgType[номер класса]= усанавливай биты по номеру типа (AH=0x01 AL=0x02 и тд по ИЛИ). Если получится пиши... Как сам попробую напишу :)


Re: AXC_SetFilter - фильтр для Alarm Control
Евгений Трунов; 1.3.02

Фильтрация по времени может не работать для Short-Term архивов. Для Long-term у меня проблем с фильтром по дате/времени не было.

Re: AXC_SetFilter - фильтр для Alarm Control
Alexis; 7.3.02

Кстати, можно же написать функцию GetFilter и разобрать полученную структурку, тем самым научится задавать нужные фильтры :)