Другие языки программирования и технологии
как в delphi сделать чтобы при нажатии на определенную кнопку выводился другой символ??
как в delphi сделать чтобы при нажатии на определенную кнопку выводился другой символ?? ну например при нажатии на "Р" в
Перехватывай событие нажатия клавиши, передавай по цепочке нужный тебе скан-код вместо настоящего. Скажу сразу, что задача весьма нетривиальная и требует некоторых специальных знаний и навыков - почитай про крюки (hooks) и библиотеки dll. Многие антивирусы программу, занимающуюся такими штуками, считают кейлоггером и могут бортануть.
SendMessage(Edit1.handle, wm_char, ord('ы'), 0); вот так всё просТо
тебе нужно перехватывать сообщения от клавиатуры и подменять их, это можно сделать поставив ловушку на клавиатуры. я просто сегодня что то похожее искал но мне не такое нужно было вот может тебе поможет:
procedure EmulateKey(Wnd: HWND; VKey: Integer);
asm
push 0
push edx
push 0101H //WM_KEYUP
push eax
push 0
push edx
push 0100H //WM_KEYDOWN
push eax
call PostMessage
call PostMessage
end;
// Пример использования:
EmulateKey(Edit1.Handle, VK_RETURN);
----------------------------------------------------------------------------
----------------------------------------------------------------------------
// Исходники библиотеки GLHookKB.dll
library GLHookKB;
uses
windows, Messages, shellapi;
const
wm_kbdglobalEvent = wm_User + 133;
var
SaveExitProc: Pointer;
glkbdHookHandle: hHook = 0;
function Key_Hook(Code: integer; wParam: word; lParam: Longint): Longint; stdcall;
var
H: HWND;
begin
if (Code >= 0) and (lParam and $40000000 = 0) then
begin
H := FindWindow('TForm1', 'Тестировщик... ');
SendMessage(H,wm_kbdglobalEvent,wparam, 0);
Result := 0;
end
else
if Code < 0 then Result := CallNextHookEx(glkbdHookHandle,Code,wParam,lParam);
end;
procedure LocalExitProc; far;
begin
if glkbdHookHandle <> 0 then
begin
UnhookWindowsHookEx(glkbdHookHandle);
ExitProc := SaveExitProc;
end;
end;
exports Key_Hook;
begin
glkbdHookHandle := SetWindowsHookEx(wh_Keyboard,@Key_Hook,hInstance,0);
if glkbdHookHandle = 0 then
MessageBox(0, 'Невозможно установить ловушку! ','Ошибка', mb_Ok)
else
begin
SaveExitProc := ExitProc;
ExitProc := @LocalExitProc;
end;
end.
Также посмотри вот тут там наглядные примеры как это все делать
www.kansoftware.ru/?did=123
procedure EmulateKey(Wnd: HWND; VKey: Integer);
asm
push 0
push edx
push 0101H //WM_KEYUP
push eax
push 0
push edx
push 0100H //WM_KEYDOWN
push eax
call PostMessage
call PostMessage
end;
// Пример использования:
EmulateKey(Edit1.Handle, VK_RETURN);
----------------------------------------------------------------------------
----------------------------------------------------------------------------
// Исходники библиотеки GLHookKB.dll
library GLHookKB;
uses
windows, Messages, shellapi;
const
wm_kbdglobalEvent = wm_User + 133;
var
SaveExitProc: Pointer;
glkbdHookHandle: hHook = 0;
function Key_Hook(Code: integer; wParam: word; lParam: Longint): Longint; stdcall;
var
H: HWND;
begin
if (Code >= 0) and (lParam and $40000000 = 0) then
begin
H := FindWindow('TForm1', 'Тестировщик... ');
SendMessage(H,wm_kbdglobalEvent,wparam, 0);
Result := 0;
end
else
if Code < 0 then Result := CallNextHookEx(glkbdHookHandle,Code,wParam,lParam);
end;
procedure LocalExitProc; far;
begin
if glkbdHookHandle <> 0 then
begin
UnhookWindowsHookEx(glkbdHookHandle);
ExitProc := SaveExitProc;
end;
end;
exports Key_Hook;
begin
glkbdHookHandle := SetWindowsHookEx(wh_Keyboard,@Key_Hook,hInstance,0);
if glkbdHookHandle = 0 then
MessageBox(0, 'Невозможно установить ловушку! ','Ошибка', mb_Ok)
else
begin
SaveExitProc := ExitProc;
ExitProc := @LocalExitProc;
end;
end.
Также посмотри вот тут там наглядные примеры как это все делать
www.kansoftware.ru/?did=123
Похожие вопросы
- как сделать чтобы при нажатии на кнопку выводился заданный текст в Delphi. хелп
- Как в Delphi сделать справку?
- Как в Delphi 7 перенести в коде строку, превышено ограничение в 255 символов
- как сделать чтобы при нажатии на слово переходить на сайт
- Как можно в Delphi сделать, чтобы gauge показывал загрузку ЦП. Как в диспетчере щадач.
- Как в Delphi сделать, чтобы форма растягивалась вместе с компанентами находящими на ней?
- Как сделать игровой автомат в Паскале? Требуется чтобы выводились 3 случайных числа от 0 до 9
- как сделать скриншот рабочего стола, если сломана кнопка print screen
- Фреймы. Как сделать так, чтобы при нажатии кнопки, страничка открывалась в соседнем фрейме
- как отключить имитацию нажатия правой кнопки мыши на палншете wacom intuos pen and touch?