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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top