Посылка нажатий русских букв и стрелок

Тема в разделе "WASM.BEGINNERS", создана пользователем clubnr, 2 ноя 2009.

  1. clubnr

    clubnr New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2006
    Сообщения:
    11
    Адрес:
    Russia
    Привет.

    Написал программку для посылки в текстовый редактор нажатий клавиш, чтобы сделать удобные макросы. Днлаю через RegisterHotKey и потом вот такой п/п, как в конце (к сож., на Дельфи).
    Не получается посылать коды русских букв и стрелок курсора, хотя в текстовом редакторе стоит русская расклатка. Подскажите, что надо посылать ему в этом случае?

    Код (Text):
    1. procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);
    2. type
    3.  TShiftKeyInfo = record
    4.   shift: Byte;
    5.   vkey: Byte;
    6.  end;
    7.  byteset = set of 0..7;
    8. const shiftkeys: array[1..3] of TShiftKeyInfo = ((shift: Ord(ssCtrl);
    9.     vkey: VK_CONTROL), (shift: Ord(ssShift); vkey: VK_SHIFT), (shift: Ord(ssAlt); vkey: VK_MENU));
    10. var
    11.  flag: DWORD;
    12.  bShift: ByteSet absolute shift;
    13.  i: Integer;
    14.  
    15. begin
    16.   for i:=1 to 3 do
    17.    if shiftkeys[i].shift in bShift then keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
    18.   if specialkey then flag:=KEYEVENTF_EXTENDEDKEY else
    19.    flag:=0;
    20.   keybd_event(key, MapvirtualKey(key, 0), flag, 0);
    21.   flag:=flag or KEYEVENTF_KEYUP;
    22.   keybd_event(key, MapvirtualKey(key, 0), flag, 0);
    23.   for i:=3 downto 1 do
    24.     if shiftkeys[i].shift in bShift then
    25.      keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), KEYEVENTF_KEYUP, 0);
    26. end; {PostKeyEx32}
     
  2. clubnr

    clubnr New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2006
    Сообщения:
    11
    Адрес:
    Russia
    Хотелось бы уметь делать как в type pilot: http://www.colorpilot.ru/typepilot.html
    В её окне выбираешь нужную фразу, щёлкаешь, и фраза появляется в позиции курсора в окне редактора, которое перед этим имело фокус ввода. Причём, это не зависит от раскладки клавиатуры в редакторе.
    В этой программке не удобно то, что каждый раз при вставке фразы она сворачивается в трей.