texto copiar e modificar selecionado na aplicação diferente
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.
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.