2010-04-17 5 views

Répondre

0

Utilisation SendMessage avec WM_KEYDOWN

Exemple:

SendMessage(hwnd, WM_KEYDOWN, VK_T, NULL); 
+0

Je suppose que cela ne fonctionne que dans ma propre fenêtre d'application? – Newbie

+0

@Newbie: Non, vous pouvez envoyer un message à n'importe quelle fenêtre dans votre session Windows –

+0

Oui, mais pour ce faire, je devrais sélectionner la fenêtre ciblée séparément, ou y a-t-il un moyen facile de sélectionner la fenêtre actuellement focalisée? – Newbie

1

Il est fonction SendInput qui peut générer des séquences de touches et d'autres types d'entrée. J'ai utilisé pour créer une application similaire aux claviers virtuels.

Exemple avec Unicode:

// This may be needed 
// #define _WIN32_WINNT 0x0501 

#include <windows.h> 
#include <winuser.h> 

void pressKey(WORD a_unicode)  
{  
     KEYBDINPUT kbinput; 
     ZeroMemory(&kbinput, sizeof(kbinput)); 
     kbinput.wScan = a_unicode; 
     kbinput.dwFlags = KEYEVENTF_UNICODE; 
     kbinput.time = 0; 

     INPUT input; 
     ZeroMemory(&input, sizeof(input)); 
     input.type = INPUT_KEYBOARD; 
     input.ki = kbinput; 

     SendInput(1, &input, sizeof(input)); 
} 
+0

ne semble pas fonctionner, au moins pas le VK_TAB etc. – Newbie

+2

approche à droite, le code erroné. Il devrait affecter le membre vVk. Et générer l'événement KEYUP aussi bien. –

+0

Oui. Peut-être un exemple un peu trompeur. Cette paix vient du code qui écrit des caractères internationaux, comme les kanji japonais, etc. C'est pourquoi il utilise des codes à la place des clés virtuelles. Pour les onglets, etc., vVk et KEYUP sont nécessaires. – Virne

Questions connexes