Реферат: API Spying
{
// См. «Чем же всё это закончится?»
void* spyMem = HeapAlloc(GetProcessHeap(), 0, sizeof(spy_function));
spy_function* spy = new(spyMem) spy_function;
// Устанавливаемеёпараметры.
spy->number.value = number;
spy->statistic.address.set_absolute(collectStatistic);
spy->func.address.set_absolute(address);
// Возвращаем указатель на функцию-шпион.
return spy;
}
catch (...)
{
// Несудьба
PostMessage(g_hSecretWindow, WM_CANNOTHOOK, number, 0);
// Возвращаем указатель на функцию
return address;
}
}
collectStatistic
Поскольку данных мало и посылать их несложно, функция collectStatistic получилась просто замечательная:
void __stdcall collectStatistic(unsigned long n) { // Посылаемномервызываемойфункции PostMessage(g_hSecretWindow, WM_CALLED, n, 0); } |
Хранение и отображение
И тем и другим занимается внешнее приложение. Реализовано всё крайне незамысловато:
// Структура, хранящая статистику для одной функции К-во Просмотров: 999
Бесплатно скачать Реферат: API Spying
|