Pergunta

Eu tenho um aplicativo do Windows em execução no backend. Eu tenho funções neste aplicações mapeadas para teclas de atalho. Como se eu colocar uma caixa de mensagem para esta função e dar tecla de atalho como Alt + Ctrl + D . então pressionar Alt , Ctrl e D em conjunto caixa de mensagem vem à tona. Meu aplicativo está funcionando bem até este ponto.

Agora eu quero escrever um código dentro dessa função de modo que quando eu estou usando outro aplicativo, como o bloco de notas, eu selecionar uma determinada linha de texto e pressione a tecla de atalho Alt + Ctrl + D é suposto para copiar o texto selecionado anexá-lo com "_copied" e colá-lo de volta para o bloco de notas.

Qualquer um que tenha tentado um aplicativo de ajuda por favor semelhante me com os seus contributos valiosos.

Foi útil?

Solução

A sua pergunta tem duas respostas

Como pode meu aplicativo definir uma tecla de atalho globais

Você tem que chamar um funcion API chamada RegisterHotKey

BOOL RegisterHotKey(
    HWND hWnd,         // window to receive hot-key notification
    int id,            // identifier of hot key
    UINT fsModifiers,  // key-modifier flags
    UINT vk            // virtual-key code
);

Mais informações aqui: http://www.codeproject.com/KB/system/ nishhotkeys01.aspx

Como obter o texto selecionado da janela de primeiro plano

A maneira mais fácil é enviar crl-C para a janela e, em seguida, capturar o conteúdo da área de transferência.

[DllImport("User32.dll")] 
private static extern bool SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll", CharSet=CharSet.Auto)]
static public extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);


.....

private void SendCtrlC(IntPtr hWnd)
    {
    uint KEYEVENTF_KEYUP = 2;
    byte VK_CONTROL = 0x11;
    SetForegroundWindow(hWnd);
    keybd_event(VK_CONTROL,0,0,0);
    keybd_event (0x43, 0, 0, 0 ); //Send the C key (43 is "C")
    keybd_event (0x43, 0, KEYEVENTF_KEYUP, 0);
    keybd_event (VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);// 'Left Control Up

}

Disclaimer: Código por Marcus Peters a partir daqui: http://bytes.com/forum/post1029553 -5.html
Postado aqui para sua conveniência.

Outras dicas

Use a Clipboard classe para copiar o conteúdo para a área de transferência, em seguida, cole no bloco de notas.

Você também pode escrever o conteúdo para um arquivo de texto e abri-lo com o bloco de notas, executando o aplicativo notepad.exe com o caminho do arquivo de texto como um parâmetro de linha de comando.

Eu acho que você pode usar SendInput função para enviar o texto para a janela de destino ou apenas o comando para colá-lo se você colocá-lo na área de transferência antes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top