Привет!
Есть ATL EXE service. При старте он пишет события "Service started", "Service stopped" и пр.
Проблема в том, что эти тексты зашиты в код, а значит, не локализуемы.
Кроме того, в качестве имени источника событий там используется имя сервиса.
В общем, эти моменты меня категорически не устраивают.
Соответственно, встал вопрос о запрете на логирование этих событий.
Как это можно сделать?
Пока вижу только вариант с переопределением через #define функции ReportEvent.
Грубо говоря, вот так работает (кусок из stdafx.h):
#include <Windows.h>
#undef ReportEvent
#define ReportEvent
#include <atlbase.h>
#undef ReportEvent
#ifdef UNICODE
#define ReportEvent ReportEventW
#else
#define ReportEvent ReportEventA
#endif // !UNICODE
Есть ли какие-нибудь другие способы добиться желаемого результата?
Здравствуйте, rus blood, Вы писали:
RB>ATL — открытая библиотека.
RB>Что мешает переписать кишки CAtlExeService, или как он там называется? ...
Ничего. Просто не хочу копировать к себе в проект 100 строчек кода из ATL.
Copy&Paste не рулит.
Здравствуйте, Lonely Dog, Вы писали:
LD>Здравствуйте, rus blood, Вы писали:
RB>>ATL — открытая библиотека.
RB>>Что мешает переписать кишки CAtlExeService, или как он там называется? ...
LD>Ничего. Просто не хочу копировать к себе в проект 100 строчек кода из ATL.
LD>Copy&Paste не рулит.
Ну, если твой проект от этого разрастется в 10-100 раз, то тогда действительно не стоит.
Тогда вариант с define-ами — это твой путь...
В ATL очень простая поддержка сервисов.
Фактически, десяток вызовов API, обернутых в сахар из шаблонных нотификаторов.
Если ты из этого хочешь нагородить что-то серъезное, тебе придется переписать многие вещи оттуда.
ATL здесь — как наглядный пример, дающий возможность быстро "пощупать", что такое сервис.
Здравствуйте, rus blood, Вы писали:
RB>Ну, если твой проект от этого разрастется в 10-100 раз, то тогда действительно не стоит.
RB>Тогда вариант с define-ами — это твой путь...
Мысль понятна. Я просто думаю, вдруг в VS2010 или VS2012 они подправят этот код еще как-нибудь. Мне его опять придется копировать к себе.
RB>В ATL очень простая поддержка сервисов.
RB>Фактически, десяток вызовов API, обернутых в сахар из шаблонных нотификаторов.
RB>Если ты из этого хочешь нагородить что-то серъезное, тебе придется переписать многие вещи оттуда.
RB>ATL здесь — как наглядный пример, дающий возможность быстро "пощупать", что такое сервис.
Да, согласен.