Конференция "WinAPI" » Как отправить в приложение символ в Unicode? [D7, WinXP]
 
  • grigor (25.10.10 15:31) [0]
    Допустим надо отправлять в приложение букву Ä или Ö.
  • Leonid Troyanovsky © (25.10.10 16:19) [1]

    > grigor   (25.10.10 15:31)  

    > Допустим надо отправлять в приложение букву Ä

    PostMessageW(wnd, WM_CHAR, WPARAM($00C4), 0)

    --
    Regards, LVT.
  • grigor (27.10.10 16:39) [2]
    Спасибо!
  • grigor (27.10.10 16:45) [3]
    А как определить хендл активного текстового поля в чужом приложении чтобы ему это отослать? А то GetActiveWindow принимает хендл окна, а оно не регистрирует сообщение WM_CHAR.
  • grigor (27.10.10 16:51) [4]
    Все, спасибо, сам разобрался
  • NikB (08.11.10 16:03) [5]

    > Допустим надо отправлять в приложение букву Ä

    Пожалуйста, а от куда (и как) взялось $00C4 (196, decimal)?
  • clickmaker © (08.11.10 16:26) [6]
    > от куда (и как) взялось $00C4 (196, decimal)?

    charmap.exe
  • Anatoly Podgoretsky © (08.11.10 16:47) [7]
    > clickmaker  (08.11.2010 16:26:06)  [6]

    Это ANSI код
  • NikB (10.11.10 15:29) [8]
    ANSI - это 1252?
    > http://ascii-table.com/ansi-codes.php


    А 1251 как сделать?
    Я писал маленкую прогу, которая работает с Yahoo msg и Skype (находит активное окно и т.д.), но не сумел послать 1251.
    В основном:
         if xWParam>=$20 then begin
           SendMessage( aHandle, WM_CHAR,    xWParam, 0); //1);
         end else begin
           SendMessage( aHandle, WM_KEYDOWN, xWParam, 0); //1);
           SendMessage( aHandle, WM_CHAR,    xWParam, 0); //1);
           SendMessage( aHandle, WM_KeyUp,   xWParam, 0); //$C0000001);
         end;

  • clickmaker © (10.11.10 15:54) [9]
    > но не сумел послать 1251

    1251 нельзя послать, ибо это зависит от набора символов, который использует тот, кому посылаешь
    можно послать код, а как его получатель отобразит - его дело
  • Anatoly Podgoretsky © (10.11.10 15:54) [10]
    АNSI это 256 кодов, которые можно как угодно интерпритировать, тебе надо 1251 ну так и интерпритируй (считай) как 1251
  • NikB (10.11.10 16:01) [11]
    Да, проблем.
    Вопрос был о Unicode, а Unicode не 255 кодов.
  • Anatoly Podgoretsky © (10.11.10 16:07) [12]
    Зачем тогда спрашиваешь

    > А 1251 как сделать?

    Для Юникода надо использовать Юникод версию - SendMessageW
    Только проверь, что она объявлена в windows.pas
  • clickmaker © (10.11.10 16:08) [13]
    > Вопрос был о Unicode, а Unicode не 255 кодов.

    а в уникоде нет понятия 1251 или 1252. Это отдельный набор символов
    см.  SendInput()
  • Anatoly Podgoretsky © (10.11.10 16:09) [14]

    > Вопрос был о Unicode, а Unicode не 255 кодов.

    К тому же вопрос был не твой, ты в него влез, как будто места мало.
  • NikB (10.11.10 16:36) [15]
    Извините, пожалуйста!
 
Конференция "WinAPI" » Как отправить в приложение символ в Unicode? [D7, WinXP]
Есть новые Нет новых   [134431   +12][b:0][p:0.001]