Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как включить верхний регистр в чужом процессе ? [D7, Win2k, WinXP]


Страницы:   1 2 3 4

ANB ©   (2005-08-29 14:39:00) 

Чтобы напечатать строго большую или маленькую букву независимо от текущего состояния. Попробовал вот так - не помогает. :

 // Установим регистр
 ThreadFrom := GetCurrentThreadId;
 ThreadTo := GetWindowThreadProcessId(hWindow, nil);
 AttachThreadInput(ThreadFrom, ThreadTo, True);
 GetKeyBoardState(KeyBoardState);
 KeyBoardState[VK_CAPITAL] := 0;
 if (bUpper) then begin
  KeyBoardState[VK_SHIFT] := $FF;
  KeyBoardState[VK_LSHIFT] := $FF;
 end else begin
  KeyBoardState[VK_SHIFT] := $FF;
  KeyBoardState[VK_LSHIFT] := $FF;
 end;
 SetKeyBoardState(KeyBoardState);
 // Эмулируем нажатие клавиши
 keybd_event(dwVK, bScanCode, dwFlags, 0);
 AttachThreadInput(ThreadFrom, ThreadTo, False);
- всегда печатает маленькими. Пробовал вместо FF - 1, никакого эффекта.


alpet   (2005-08-29 17:09:00) [61]

ANB ©   (29.08.05 17:07) [16]

У меня ее нет. Попробуй ее отладчиком помучать - если использует *KeyState функции - будут срабатывать бряки (если конечно можешь работать с окном CPU).


ANB   (2005-08-29 17:07:00) [62]


> alpet ©   (29.08.05 16:51) [15]
- я по всякому изгалился. В обычных делфовых программах хватает DOWN+CHAR+UP. В этой - нет. Чего туда еще запихать я уже не смог придумать. Через keyb_event работает. Может через GetKeyboardState кнопки достают, черт их знает. Вообще, глючная штука, израильтяне писали. Повбывав бы.


alpet   (2005-08-29 16:51:00) [63]

ANB ©   (29.08.05 16:47) [14]

Как же тогда раскладка переключается в ней? Сообщения обрабатываются в ней, без этого никак - попробуй поставить ловушку на сообщения, блокирующую ввод некоторых клавиш - в программе они не будут соответственно действовать. А про SetKeyboardState таки забудь, не для этого она придумана.


ANB   (2005-08-29 16:47:00) [64]


> alpet ©   (29.08.05 16:46) [12]
- с программами на Magic. Он вообще игнорит обычные виндовые сообщения.


ANB   (2005-08-29 16:46:00) [65]


> alpet ©   (29.08.05 16:45) [10]
- ради такой простой задачи писать внедрение как то не очень охота. Еще сломаю чего нибудь.


alpet   (2005-08-29 16:46:00) [66]

ANB ©   (29.08.05 16:45) [11]
Не работает с чем?


ANB   (2005-08-29 16:45:00) [67]


> begin...end ©   (29.08.05 16:10) [9]
- дык знаю я. В справке по атачу написано, что ее надо использовать, чтобы обмануть SetKeyboardState. А не работает. Сделал уже через нажатие шифта с учетом капслука и поддержкой символов над цифрами (!@#$). Млин. Не нравится мне через keyb_event, а по другому не работает.


alpet   (2005-08-29 16:45:00) [68]

ANB ©   (29.08.05 16:00) [8]

Внедрение кода в поток разве что, но зачем это нужно?


begin...end   (2005-08-29 16:10:00) [69]

> ANB ©   (29.08.05 16:00) [8]

> чтобы символы печатать над цифрами.

Не понял я.

> А нету способа заставить SetKeyboardState работать ?

Так она ж, вроде бы, только для текущего потока.


ANB   (2005-08-29 16:00:00) [70]


> begin...end ©   (29.08.05 15:55) [7]
- чтобы символы печатать над цифрами. Хотя можно это отдельно поанализировать. А нету способа заставить SetKeyboardState работать ?


begin...end   (2005-08-29 15:55:00) [71]

> ANB ©   (29.08.05 15:53) [6]

А если нажат, то зачем нажимать Shift?


ANB   (2005-08-29 15:53:00) [72]

А если нажат, то придется и его эмулировать ?


alpet   (2005-08-29 15:46:00) [73]

begin...end ©   (29.08.05 15:44) [3]
Вобщем симметрично ☺


alpet   (2005-08-29 15:45:00) [74]

ANB ©   (29.08.05 15:40) [2]
GetKeyState (VK_CAPITAL)?


begin...end   (2005-08-29 15:44:00) [75]

> ANB ©   (29.08.05 15:40) [2]

GetKeyState, VK_CAPITAL ?


ANB   (2005-08-29 15:40:00) [76]


> alpet ©   (29.08.05 15:35) [1]
- а как узнать, что CAPS не нажат ?


alpet   (2005-08-29 15:35:00) [77]

Сначала VK_SHIFT, потом код символа, потом опять VK_SHIFT но с флажоком KEYEVENTF_KEYUP.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо