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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top