Copier et modifier le texte sélectionné dans différentes applications
Question
J'ai une application Windows en cours d'exécution sur le backend. J'ai des fonctions dans cette application mappées sur des touches de raccourci. Comme si je mettais une boîte de message dans cette fonction et donnais la touche directe comme Alt + Ctrl + D . appuyez ensuite simultanément sur Alt , Ctrl et D pour faire apparaître la boîte de message. Mon application fonctionne bien jusqu'à ce point.
Maintenant, je veux écrire un code dans cette fonction afin que, lorsque j'utilise une autre application telle que le bloc-notes, je sélectionne une ligne de texte particulière et appuie sur la touche de raccourci Alt + Ctrl + D il est censé copier le texte sélectionné et l'ajouter à "_copied". et collez-le dans le bloc-notes.
Toute personne ayant essayé une application similaire, aidez-moi avec vos précieuses contributions.
La solution
Votre question a deux réponses
Comment mon application peut-elle définir un raccourci clavier global
Vous devez appeler une fonction API appelée 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
);
Plus d'infos ici: http://www.codeproject.com/KB/system/ nishhotkeys01.aspx
Comment obtenir le texte sélectionné depuis la fenêtre de premier plan
La méthode la plus simple consiste à envoyer crl-C à la fenêtre, puis à capturer le contenu du presse-papiers.
[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
}
Clause de non-responsabilité: Code de Marcus Peters à partir d'ici: http://bytes.com/forum/post1029553 -5.html
Publié ici pour votre commodité.
Autres conseils
Utilisez la classe Presse-papiers pour copier le contenu. dans le presse-papiers, puis collez-le dans le bloc-notes.
Vous pouvez également écrire le contenu dans un fichier texte et l'ouvrir avec le bloc-notes en exécutant l'application notepad.exe avec le chemin d'accès au fichier texte comme paramètre de ligne de commande.
Je pense que vous pouvez utiliser SendInput . fonction pour envoyer le texte à la fenêtre cible ou simplement la commande pour le coller si vous l'avez déjà placé dans le presse-papiers.