Имя: Пароль:
IT
 
SendMessage WM_CHAR и русские буквы
,
0 n0ther
 
25.09.13
19:46
Необходимо передать в окно 1С символы. Проблема возникает с передачей русских букв.

Исходная строка в кодировке CP1251.

так не работает
for (i=0;i<sizeof(str1);i++) {
  SendMessage(hwnd,WM_CHAR,str1[i],1);
}

так тоже

i = MultiByteToWideChar(CP_ACP, 0, str1, MAX_PATH, pwc, MAX_PATH);
for (i=0;i<sizeof(pwc);i++) {
  SendMessageW(hwnd,WM_CHAR,pwc[i],1);
}
1 Torquader
 
26.09.13
00:46
Передавать надо не WM_CHAR, а WM_KEYDOWN и в нужной раскладке - тогда всё прекрасно работает.
Да и потом, WM_CHAR обычно через PostMessage передаются.

P.S. передавать нужно в элемент диалога, куда это будет вводиться - основное окно 1С не очень готово к обработке символов.
Ну и проще перехватчиком поймать в окне 1С рождное WM_CHAR и посмотреть - кому оно идёт, и как в нём передаются русские буквы.

Удачи.
У меня родной WM_CHAR работал (правда в Windows XP)
2 n0ther
 
26.09.13
07:34
(1) передаю в элемент диалога. цифры туда "залетают" на ура

WM_KEYDOWN неудобна, так как у меня и русские и английские буквы. попробую PostMessage
3 vcv
 
26.09.13
07:57
Попробуй патч реестра. При копи/пасте помогает от превращения русских букв в "кракозябры".

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
1250 = c_1251.nls
1251 = c_1251.nls
1252 = c_1251.nls
4 Cerera
 
26.09.13
08:25
(0)а для чего вам это?
5 n0ther
 
26.09.13
09:17
всё взлетело

(4) переход "извне" по гиперссылке на элемент справочника
6 Torquader
 
27.09.13
00:05
(5) Если нужно открыть форму в 1С из-вне, то лучше всего DDE и немного поправить код в 1С, чтобы не открывать формы в момент проведения документов.
7 n0ther
 
27.09.13
10:54
(6) пример?
8 oleg_km
 
27.09.13
12:24
(6) А разве восьмерка поддерживает DDE?
9 Torquader
 
29.09.13
23:15
(8) Восьмёрка COM-connector поддерживает.
Я как-то о семёрке подумал - в восьмёрке как-то не приходилось что-то в окна вписывать - там можно из запущенной внешней обработки управлять другими формами.
10 n0ther
 
11.10.13
16:27
(9)
эээээ
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.