Copia e modifica il testo selezionato in un'altra applicazione
Domanda
Ho un'applicazione Windows in esecuzione sul back-end. Ho funzioni in queste applicazioni associate a tasti di scelta rapida. Come se inserissi una finestra di messaggio in questa funzione e fornissi il tasto di scelta rapida come Alt + Ctrl + D . quindi premendo Alt , Ctrl e D viene visualizzata la finestra di messaggio. La mia applicazione funziona bene fino a questo punto.
Ora voglio scrivere un codice all'interno di questa funzione in modo che quando sto usando un'altra applicazione come il blocco note, seleziono una particolare riga di testo e premo il tasto di scelta rapida Alt + Ctrl + D dovrebbe copiare il testo selezionato aggiungendolo con " _copied " e incollalo di nuovo sul blocco note.
Chiunque abbia provato un'applicazione simile, ti prego di aiutarmi con i tuoi preziosi input.
Soluzione
La tua domanda ha due risposte
Come può la mia app impostare un tasto di scelta rapida globale
Devi chiamare una funzione API chiamata 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
);
Maggiori informazioni qui: http://www.codeproject.com/KB/system/ nishhotkeys01.aspx
Come ottenere il testo selezionato dalla finestra in primo piano
Il modo più semplice è inviare crl-C alla finestra e quindi catturare il contenuto degli appunti.
[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
}
Dichiarazione di non responsabilità: codice di Marcus Peters da qui: http://bytes.com/forum/post1029553 -5.html
Inserito qui per comodità.
Altri suggerimenti
Utilizza la Clipboard per copiare il contenuto in negli Appunti, quindi incolla il Blocco note.
Puoi anche scrivere il contenuto in un file di testo e aprirlo con Blocco note eseguendo l'applicazione notepad.exe con il percorso del file di testo come parametro della riga di comando.
Penso che tu possa usare SendInput funzione per inviare il testo alla finestra di destinazione o solo il comando per incollarlo se lo hai già inserito negli appunti.