|  | 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)
эээээ
 |  |