| Код | //-------------------------- #include <vcl.h> #include <fstream.h> #include <memory> #include <winuser.h> #include <stdio.h> #include <IniFiles.hpp> #include <DateUtils.hpp> #pragma hdrstop //--------------------------
extern "C" __declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam); //-------------------------- // //-------------------------- LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam) { char *iniFileName=".\\hook.ini"; TIniFile *ini = new TIniFile(iniFileName); int key1=ini->ReadInteger("hook settings","key1",120); delete ini; AnsiString compareWParam =(AnsiString)wParam; AnsiString compareKey1=(AnsiString)key1; if(compareWParam==compareKey1)// { TDateTime dt = Now(); std::auto_ptr<TStringList> list (new TStringList); AnsiString strDate= dt.DateString(); AnsiString strTime= dt.TimeString(); AnsiString str = strDate+" "+strTime+" "+compareKey1; ShowMessage(str); list->Add(str); unsigned short year, month, day, hour, min, sec,msec; DecodeDateTime(dt.CurrentDate(), year, month, day, hour, min, sec,msec); AnsiString pathLogFile="c:\\"+(AnsiString)month+year+"key1.quit"; list->SaveToFile(pathLogFile); } return CallNextHookEx(NULL, code, wParam, lParam); } int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) { return 1; } //--------------------------
|
Я дико извиняюсь , что очень часто создаю темы , но время сильно жмет, а в си я только ученик , вот это DLL для перехвата с клавы нажатых кнопок , посмотрите , где я не правильно сделал , если что поправьте плиз ))) А вот как я ее запускаю, тоже плиз проверьте , а то я по не знанию многих вещей могу дурость написать... Так вот я то зациклить, зациклил DLL (работать должна 24 часа программа), но в какой то момент , должно ведь все стопаться , как мне это реализовать?
| Код | //-------------------------- /* <*.h> - заголовочные файлы, чтобы юзать функции WinAPI и не только их */ #include <vcl.h> #include <condefs.h> #include <winuser.h> #include <winbase.h> #include <stdio.h> //--------------------------------------------------------------------------- HHOOK hook; // Handle нашей "шпионской" функции //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { // Объявляем тип функции; // параметры и их тип в скобках указывать не надо - и так работает :) typedef int (CALLBACK* lpfn)(); lpfn hookfunc; // Конкретный указатель на функцию
// Юзаем нашу DLL HINSTANCE hDLL=LoadLibrary("dllhook.dll"); // Находим в ней адрес функции, которая и будет шпионить за клавой hookfunc=(lpfn)GetProcAddress(hDLL,"KeyboardProc");
// Запускаем шпиона hook=SetWindowsHookEx(WH_KEYBOARD, /* шпионить за клавиатурой */ hookfunc, /* функция, которая шпионит */ LoadLibrary("dllhook.dll"), /* еҒ DLL */ 0 /* Шпионить за всеми потоками в системе*/ );
while(true) {Sleep(-1);}; // Зацикливаем прогу, чтобы DLL висела в памяти } //--------------------------
|
Так вот я то зациклить, зациклил DLL (работать должна 24 часа программа), но в какой то момент , должно ведь все стопаться , как мне это реализовать? , буду очень благодарен , если укажите на ошибки в коде...
|