#include #include "Lib_Stat.h" #include #include #include "Lib_Dinamic.h" // Заголовочный файл с объявлениями функций typedef void(*StartKeyLoggingFunc)(); typedef void(*StopKeyLoggingFunc)(); typedef const char* (*GetLastTenKeysFunc)(); int main() { unsigned int n; std::cout << "Enter the Fibonacci number: "; std::cin >> n; unsigned long long result = Fibonacci(n); std::cout << n << "-e Fibonacci number: " << result << std::endl; // Загрузить библиотеку HMODULE hLib = LoadLibrary(TEXT("Lib_Dinamic.dll")); if (hLib == NULL) { std::cerr << "Failed to load library." << std::endl; return 1; } // Получить адреса функций StartKeyLoggingFunc StartKeyLogging = (StartKeyLoggingFunc)GetProcAddress(hLib, "StartKeyLogging"); StopKeyLoggingFunc StopKeyLogging = (StopKeyLoggingFunc)GetProcAddress(hLib, "StopKeyLogging"); GetLastTenKeysFunc GetLastTenKeys = (GetLastTenKeysFunc)GetProcAddress(hLib, "GetLastTenKeys"); if (!StartKeyLogging || !StopKeyLogging || !GetLastTenKeys) { std::cerr << "Failed to get function addresses." << std::endl; FreeLibrary(hLib); return 1; } // Запустить логирование клавиш StartKeyLogging(); std::cout << "Key logging started. Press some keys...." << std::endl; // Подождать некоторое время, чтобы дать возможность пользователю нажать клавиши Sleep(10000); // Ждать 10 секунд // Остановить логирование клавиш StopKeyLogging(); std::cout << "Key logging stopped." << std::endl; // Спросить пользователя, хочет ли он вывести данные std::cout << "Do you want to display data?? (y/n): "; char answer; std::cin >> answer; if (answer == 'y' || answer == 'Y') { // Получить последние 10 нажатых клавиш const char* keys = GetLastTenKeys(); std::cout << "Last 10 keys pressed: " << keys << std::endl; } // Освободить библиотеку FreeLibrary(hLib); return 0; }