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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2007, 03:21   #21
grio
Новичок
Джуниор
 
Регистрация: 31.10.2007
Сообщений: 2
По умолчанию

mihali4, совершенно не понял причем тут KeyboardState.

Сделал пока вот так:

Цитата:
keybd_event(VK_SHIFT,0,0,0);
PostKeyboardEvent(MyKey,1);
keybd_event(VK_SHIFT,0,KEYEVENTF_KE YUP,0);
Правда это не совсем то, что хотелось получить.
Например, способ не годится, если передавать данные приложению в бэкграунде.
grio вне форума Ответить с цитированием
Старый 05.06.2011, 08:46   #22
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

А это не выводит!

Код:
keybd_event(ord('['), 0, 0, 0);
keybd_event(ord('['), 0, KEYEVENTF_KEYUP, 0);
VintProg вне форума Ответить с цитированием
Старый 05.06.2011, 10:41   #23
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Цитата:
Сообщение от VintProg Посмотреть сообщение
А это не выводит!
Код:
keybd_event(ord('['), 0, 0, 0);
keybd_event(ord('['), 0, KEYEVENTF_KEYUP, 0);
Этот код у меня открываем меню "Пуск".

Вот так работает.
Код:
keybd_event_(219, 0, 0, 0)
keybd_event_(219, 0, #KEYEVENTF_KEYUP, 0)
*PB* вне форума Ответить с цитированием
Старый 05.06.2011, 11:07   #24
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

проблема то в том что, функция keybd_event принимает виртуальный код клавиши.
а не код символа.
MapVirtualKey в помощь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.06.2011, 12:13   #25
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

а чтоже функция ord так ек помогает, есть заменители?
VintProg вне форума Ответить с цитированием
Старый 05.06.2011, 12:21   #26
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а мой пост вы пропустили?
ord - дает код символа, но не виртуальный код клавиши(и помоему она вообще ничего не делает, но не суть)
я же привел название функции и так же ссылку на справку.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.06.2011, 13:04   #27
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

а также символ @ не выводится:
keybd_event($62, 0, 0, 0);
keybd_event($62, 0, KEYEVENTF_KEYUP, 0)
VintProg вне форума Ответить с цитированием
Старый 05.06.2011, 13:12   #28
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

перечитываем мой пост до понимания.
собаку вы как вводите руками?
жмете шифт, потом жмете 2, потом отпускаете шифт.
хотя можете попробовать через MapVirtualKey но сомневаюсь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.06.2011, 13:35   #29
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

и еще, мне надо реализовать такую строку которая будет выводить слова:

к прмиеру 'Хж87""@@gREEN'

а то все у меня криво получилось...

Код:
unit Unit1;

interface


const
 RU_KEYS_STATE = 1;
 LARGE_KEY     = $01;

procedure PostKeyboardEvent(KeyKode, layoutr, largeOrSmall : integer);
var
 Temp : TInput;
 dState  : TKeyboardState;
 Layouta: array[0.. KL_NAMELENGTH] of char;
begin

if layoutr = 0 then
   begin
     LoadKeyboardLayout(StrCopy(Layouta,'00000409'),KLF_ACTIVATE);
   end;

//RU
if layoutr = 1 then
   begin
    LoadKeyboardLayout( StrCopy(Layouta,'00000419'),KLF_ACTIVATE);
    beep;
   end;

if largeOrSmall = 1 then
   keybd_event(VK_SHIFT,0,0,0);

Temp.IType:=INPUT_KEYBOARD;
Temp.ki.time:=0;
Temp.ki.dwExtraInfo:=cardinal(nil);
Temp.ki.wVk:=KeyKode and $FF;
Temp.ki.wScan:=MapVirtualKey(KeyKode, 0) and $FF;
Temp.ki.dwFlags:=0;
SendInput(1,Temp,SizeOf(Temp));

if largeOrSmall = 1 then
  keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);

end;

procedure PostString(S : String);
var
 i : integer;

begin

  for i:=1 to Length(S) do
      begin

        case s[i] of


        //RU ----------------
         'й': begin PostKeyboardEvent(ord('Q'),RU_KEYS_STATE, 0);
                    exit end;
         'Й': PostKeyboardEvent(ord('Q'),RU_KEYS_STATE, 1);
         'ц': PostKeyboardEvent(ord('W'),RU_KEYS_STATE, 0);
         'Ц': PostKeyboardEvent(ord('W'),RU_KEYS_STATE, 1);
         'у': PostKeyboardEvent(ord('E'),RU_KEYS_STATE, 0);
         'У': PostKeyboardEvent(ord('E'),RU_KEYS_STATE, 1);
         'к': PostKeyboardEvent(ord('R'),RU_KEYS_STATE, 0);
         'К': PostKeyboardEvent(ord('R'),RU_KEYS_STATE, 1);
         'е': PostKeyboardEvent(ord('T'),RU_KEYS_STATE, 0);
         'Е': PostKeyboardEvent(ord('T'),RU_KEYS_STATE, 1);
         'н': PostKeyboardEvent(ord('Y'),RU_KEYS_STATE, 0);
         'Н': PostKeyboardEvent(ord('Y'),RU_KEYS_STATE, 1);
         'г': PostKeyboardEvent(ord('U'),RU_KEYS_STATE, 0);
         'Г': PostKeyboardEvent(ord('U'),RU_KEYS_STATE, 1);
         'ш': PostKeyboardEvent(ord('I'),RU_KEYS_STATE, 0);
         'Ш': PostKeyboardEvent(ord('I'),RU_KEYS_STATE, 1);
         'щ': PostKeyboardEvent(ord('O'),RU_KEYS_STATE, 0);
         'Щ': PostKeyboardEvent(ord('O'),RU_KEYS_STATE, 1);
         'з': PostKeyboardEvent(ord('P'),RU_KEYS_STATE, 0);
         'З': PostKeyboardEvent(ord('P'),RU_KEYS_STATE, 1);
         'х': PostKeyboardEvent($DB,RU_KEYS_STATE, 0);
         'Х': PostKeyboardEvent($DB,RU_KEYS_STATE, 1);
         'ъ': PostKeyboardEvent($DD,RU_KEYS_STATE, 0);
         'Ъ': PostKeyboardEvent($DD,RU_KEYS_STATE, 1);
         'ф': PostKeyboardEvent(ord('A'),RU_KEYS_STATE, 0);
         'Ф': PostKeyboardEvent(ord('A'),RU_KEYS_STATE, 1);
         'ы': PostKeyboardEvent(ord('S'),RU_KEYS_STATE, 0);
         'Ы': PostKeyboardEvent(ord('S'),RU_KEYS_STATE, 1);
         'в': PostKeyboardEvent(ord('D'),RU_KEYS_STATE, 0);
         'В': PostKeyboardEvent(ord('D'),RU_KEYS_STATE, 1);
         'а': PostKeyboardEvent(ord('F'),RU_KEYS_STATE, 0);
         'А': PostKeyboardEvent(ord('F'),RU_KEYS_STATE, 1);
         'п': PostKeyboardEvent(ord('G'),RU_KEYS_STATE, 0);
         'П': PostKeyboardEvent(ord('G'),RU_KEYS_STATE, 1);
         'р': PostKeyboardEvent(ord('H'),RU_KEYS_STATE, 0);
         'Р': PostKeyboardEvent(ord('H'),RU_KEYS_STATE, 1);
         'о': PostKeyboardEvent(ord('J'),RU_KEYS_STATE, 0);
         'О': PostKeyboardEvent(ord('J'),RU_KEYS_STATE, 1);
         'л': PostKeyboardEvent(ord('K'),RU_KEYS_STATE, 0);
         'Л': PostKeyboardEvent(ord('K'),RU_KEYS_STATE, 1);
         'д': PostKeyboardEvent(ord('L'),RU_KEYS_STATE, 0);
         'Д': PostKeyboardEvent(ord('L'),RU_KEYS_STATE, 1);
         'ж': PostKeyboardEvent($BA,RU_KEYS_STATE, 0);
         'Ж': PostKeyboardEvent($BA,RU_KEYS_STATE, 1);
         'э': PostKeyboardEvent($DE,RU_KEYS_STATE, 0);
         'Э': PostKeyboardEvent($DE,RU_KEYS_STATE, 1);
         'я': PostKeyboardEvent(ord('Z'),RU_KEYS_STATE, 0);
         'Я': PostKeyboardEvent(ord('Z'),RU_KEYS_STATE, 1);
         'ч': PostKeyboardEvent(ord('X'),RU_KEYS_STATE, 0);
.....
         'ю': PostKeyboardEvent($BE,RU_KEYS_STATE, 0);
         'Ю': PostKeyboardEvent($BE,RU_KEYS_STATE, 1);
        //CHAR
          '@':  PostKeyboardEvent($32,0, 1);

         
         end;

      end;



end;



procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin



postString('ааааААА@@@@');






end;

procedure TForm1.FormCreate(Sender: TObject);
var
 Layoutaa: array[0.. KL_NAMELENGTH] of char;

begin
 LoadKeyboardLayout(StrCopy(Layoutaa,'00000409'),KLF_ACTIVATE);
end;

end.
VintProg вне форума Ответить с цитированием
Старый 05.06.2011, 13:36   #30
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Короче хреново работает!!! он мне заместо ааааААА@@@@ выводить стал FFFFfff"""..
VintProg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция Tregistry.keyexists не работает Ozerich Общие вопросы Delphi 5 18.09.2008 09:42
Не работает функция gets()!!! Ilya'91 Общие вопросы C/C++ 1 28.07.2008 23:16
Не работает функция floor в Java POPOV Помощь студентам 1 24.04.2008 14:08
keybd_event [Smarik] Win Api 1 23.03.2008 18:11
не корректно работает функция "если" (+) zetrix Microsoft Office Excel 0 30.10.2006 19:19