SendMessage WM_CHAR и русские буквы #682137


#0 by n0ther
Необходимо передать в окно 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 by Torquader
Передавать надо не WM_CHAR, а WM_KEYDOWN и в нужной раскладке - тогда всё прекрасно работает. Да и потом, WM_CHAR обычно через PostMessage передаются. P.S. передавать нужно в элемент диалога, куда это будет вводиться - основное окно 1С не очень готово к обработке символов. Ну и проще перехватчиком поймать в окне 1С рождное WM_CHAR и посмотреть - кому оно идёт, и как в нём передаются русские буквы. Удачи. У меня родной WM_CHAR работал (правда в Windows XP)
#2 by n0ther
передаю в элемент диалога. цифры туда "залетают" на ура WM_KEYDOWN неудобна, так как у меня и русские и английские буквы. попробую PostMessage
#3 by vcv
Попробуй патч реестра. При копи/пасте помогает от превращения русских букв в "кракозябры". [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage] 1250 = c_1251.nls 1251 = c_1251.nls 1252 = c_1251.nls
#4 by Cerera
а для чего вам это?
#5 by n0ther
всё взлетело переход "извне" по гиперссылке на элемент справочника
#6 by Torquader
Если нужно открыть форму в 1С из-вне, то лучше всего DDE и немного поправить код в 1С, чтобы не открывать формы в момент проведения документов.
#7 by n0ther
пример?
#8 by oleg_km
А разве восьмерка поддерживает DDE?
#9 by Torquader
Восьмёрка COM-connector поддерживает. Я как-то о семёрке подумал - в восьмёрке как-то не приходилось что-то в окна вписывать - там можно из запущенной внешней обработки управлять другими формами.
#10 by n0ther
эээээ
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С