É possível mover o caret em um texto (com imagens) inserido com SENDMESSAGE?

Denis Valjean 0 Pontos de reputação
2024-10-19T15:23:36.8633333+00:00

Eu consigo facilmente inserir texto e posicionar o caret como quero, quando há apenas texto. Mas se há uma imagem colada no final, simulada com CTRL+V par aum editor html, não consigo mais mover o caret, ele fica sempre após a imagem colada. Tentei reposicionar o cursor depois de colar a imagem, mas sem sucesso. Alguma ideia??? No MSword, através da API, eu consigo fazer, mas em editores html não.

   # Inserir o texto via SendMessage
            win32gui.SendMessage(focused_hwnd, win32con.EM_REPLACESEL, False, text)
            # Ajustar a posição do cursor após a inserção
            new_cursor_pos = sel_start + cursor_offset
            win32gui.SendMessage(focused_hwnd, win32con.EM_SETSEL, new_cursor_pos, new_cursor_pos)
            return True
Windows
Windows
Uma família de sistemas operacionais da Microsoft executados em computadores pessoais, tablets, laptops, telefones, dispositivos de Internet das Coisas, headsets de realidade misturada autônomos, grandes telas de colaboração e outros dispositivos.
177 perguntas
0 comentários Sem comentários
{count} votos

2 respostas

Classificar por: Mais útil
  1. Jonathan Pereira Castillo 8,505 Pontos de reputação Fornecedor da Microsoft
    2024-10-22T21:48:34.1066667+00:00

    Oi Denis Valjean!

    Bem-vindo ao Microsoft Q&A!

    Mover o caret em um texto que inclui imagens inseridas com SendMessage pode ser complicado, especialmente em editores HTML. Aqui estão algumas sugestões que podem ajudar:

    Inserir a Imagem e Ajustar o Caret:

    • Após inserir a imagem, tente ajustar a posição do caret manualmente. Você pode precisar de um pequeno atraso para garantir que a imagem seja processada antes de mover o caret. Usar JavaScript para Editores HTML:
    • Se estiver trabalhando com um editor HTML, considere usar JavaScript para manipular o caret. Aqui está um exemplo de como você pode fazer isso:
    function setCaretAfterImage() {
        var img = document.querySelector('img:last-of-type');
        if (img) {
            var range = document.createRange();
            var sel = window.getSelection();
            range.setStartAfter(img);
            range.collapse(true);
            sel.removeAllRanges();
            sel.addRange(range);
        }
    }
    

    Combinar VBA com JavaScript:

    • Se você estiver usando VBA para inserir texto e imagens, pode ser útil combinar VBA com JavaScript para ajustar o caret em editores HTML.

    Espero que essas dicas ajudem a resolver o problema! Se precisar de mais assistência, estou à disposição.

    Saudações

    Jonathan.

    -----------

    Sua opinião é muito importante para nós! Se esta resposta resolveu sua consulta, por favor clique em ‘YES‘. Isso nos ajuda a melhorar continuamente a qualidade e relevância de nossas soluções. Obrigado pela sua colaboração!

    0 comentários Sem comentários

  2. Jonathan Pereira Castillo 8,505 Pontos de reputação Fornecedor da Microsoft
    2024-11-05T16:53:27.1833333+00:00

    Oi Denis Valjean!,

    O objetivo desta mensagem é verificar as informações fornecidas. Se tiver mais atualizações sobre este assunto, por favor, não hesite em responder neste mesmo tópico.

    Cuidadosamente                 

    Jonathan

    -----------

    Sua opinião é muito importante para nós! Se esta resposta resolveu sua consulta, por favor clique em ‘YES‘. Isso nos ajuda a melhorar continuamente a qualidade e relevância de nossas soluções. Obrigado pela sua colaboração!

    0 comentários Sem comentários

Sua resposta

As respostas podem ser marcadas como Respostas Aceitas pelo autor da pergunta, o que ajuda os usuários a saber a resposta que resolveu o problema do autor.