Pregunta

Tengo una aplicación de Windows ejecutándose en el backend. Tengo funciones en estas aplicaciones asignadas a teclas de acceso rápido. Al igual que si pongo un cuadro de mensaje en esta función y doy la tecla de acceso rápido como Alt + Ctrl + D . luego, al presionar Alt , Ctrl y D , aparece el cuadro de mensaje. Mi aplicación está funcionando bien hasta este punto.

Ahora quiero escribir un código dentro de esta función para que cuando esté usando otra aplicación como el bloc de notas, seleccione una línea de texto en particular y presione la tecla de acceso rápido Alt + Ctrl + D se supone que copia el texto seleccionado y añádelo con " _copied " y pegarlo de nuevo en el bloc de notas.

Cualquier persona que haya probado una aplicación similar, por favor, ayúdeme con sus valiosas aportaciones.

¿Fue útil?

Solución

Tu pregunta tiene dos respuestas

¿Cómo puede mi aplicación configurar una tecla de acceso rápido global

Tienes que llamar a una función de API llamada 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
);

Más información aquí: http://www.codeproject.com/KB/system/ nishhotkeys01.aspx

Cómo obtener el texto seleccionado desde la ventana de primer plano

La forma más fácil es enviar crl-C a la ventana y luego capturar el contenido del portapapeles.

[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

}

Descargo de responsabilidad: código de Marcus Peters desde aquí: http://bytes.com/forum/post1029553 -5.html
Publicado aquí para su conveniencia.

Otros consejos

Use la clase Portapapeles para copiar el contenido a el portapapeles, luego pegar en el bloc de notas.

También puede escribir el contenido en un archivo de texto y abrirlo con el bloc de notas ejecutando la aplicación notepad.exe con la ruta del archivo de texto como parámetro de línea de comando.

Creo que puede usar SendInput función para enviar el texto a la ventana de destino o simplemente el comando para pegarlo si lo ha puesto en el portapapeles anteriormente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top