Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2017, 09:55   #1
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию Перевод символа в символ+shift

Здравствуйте! Имею следующую проблему:
Есть глобальный хук на клавиатуру, который отправляет все нажатые клавиши на мой обработчик, получаю нужный мне код клавиши за счет функции ToUnicodeEx, но не могу понять как учесть ещё зажатую клавишу Shift?

Хук самый примитинвый:
Код:
// хук-процедура клавиатуры
function KeyboardHook(Code: integer; WParam,LParam: wparam): DWORD; stdcall;
var
  LogHWND: THandle;
begin
  if Code = HC_ACTION then begin
    hMemFile:=OpenFileMapping(FILE_MAP_WRITE, False, 'wrapper');
    PHookRec1:=MapViewOfFile(hMemFile, FILE_MAP_WRITE, 0, 0, 0);
    if PHookRec1<>nil then
      PostThreadMessage(PHookRec1.idThread,WM_USER+1,WParam,LParam);
  end;
  Result:= CallNextHookEx(HOOK_HANDLE_K,Code,WParam,LParam);
end;
Обрабатываю так:

Код:
if (Msg.LParam and $80000000 <> 0) then
begin // WM_KEYUP
 if GetAsyncKeyState(VK_SHIFT)<>0 then
  ShiftState:='ssShift';
 GetKeyboardState(kbState);
 KeybLayout := GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil));
 count := ToUnicodeEx(Msg.wParam, (Msg.lParam and $FF0000), @kbState, @Buf, (Msg.lParam and $FFFF), 0, keybLayout);
 if Count = 1 then
 begin
  showmessage(Buf);
 end;
end;
Winexcel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставлять символ через каждые 4 символа UKRtortik PHP 18 03.05.2021 11:17
Как вывести ASCII символ введенного с клавиатуры символа? danek130995 Помощь студентам 1 04.11.2014 01:10
Заменить код символа на символ rikomono Microsoft Office Excel 1 24.02.2013 18:47
Перл. Замена символа \ на символ / Stilet PHP 1 12.04.2008 10:17
Перевод кода символа в символ таблицы ASCII nerh Общие вопросы C/C++ 3 01.02.2008 20:34