|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Отправка текста в cmd.exe
Здравствуйте, для отправки клавиш в cmd использую код:
Код:
procedure EmulateKey(Wnd: HWND; VKey: Integer); asm push 0 push edx push 0100H //WM_KEYDOWN push eax call PostMessage end; Если я отпраляю 'А' то в cmd появитса 'а' , а если отправил 'а' то появитса другой символ. При отправке 'А' с зажатым shift то приходит 'А' . Как мне заставить думать cmd что shift нажат? |
#2
|
||||
|
||||
Ну ты и изварщен.
Используй: Код:
keybd_event(VK_LCONTROL, 0, 0, 0); //Нажатие левого Ctrl. keybd_event(VK_LSHIFT, 0, 0, 0); //Нажатие левого Shift. keybd_event(Ord('Z'), 0, 0, 0); //Нажатие 'z'. keybd_event(Ord('Z'), 0, KEYEVENTF_KEYUP, 0); //Отпускание 'z'. keybd_event(VK_LSHIFT, 0, KEYEVENTF_KEYUP, 0); //Отпускание левого Shift. keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0); //Отпускание левого Ctrl. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 27.01.2015 в 16:21. |
#3
|
|||
|
|||
А без keybd_event возможно с имитировать?
|
#4
|
||||
|
||||
Ну значит высчитывай разницу между "a" и "другим символом".
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
||||
|
||||
а традиционный способ чем не устраивает? hStdInput, CreatePipe, WriteFile
Пишу программы за еду. __________________ |
#6
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
|||
|
|||
Цитата:
Код:
type TAttachConsole=function (ProcessID:DWORD):boolean; stdcall; var ProcessID:DWORD; AC:TAttachConsole; AKernel:Cardinal; cb : DWORD; begin GetWindowThreadProcessId(FindWindow('ConsoleWindowClass',nil),ProcessID); AC:=nil; if ProcessID>0 then begin AKernel:=LoadLibrary('kernel32.dll'); @AC:=GetProcAddress(AKernel,'AttachConsole'); if @AC<>nil then begin AC(ProcessID); WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), pchar('tEST'), length('tEST'), cb, nil); end; end; end; |