[C++] clavier-simulation caractères spéciaux

Thoams Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
 Làpourt'aider -
Bonjour,

Je suis en train de réaliser un clavier virtuel. Il marche parfaitement avec les touches "classiques" AZERTY grâce à la fonction keybd_event() , mais j'aimerais maintenant créer des touches "caractères spéciaux" comme '¿' (ALT+168) ou 'ß' (ALT+225).

Donc je voulais simuler une combinaison de touches = {ALT + 2 + 2 + 5 + /ALT}. Malheureusement je n'y arrive pas ! Ce qui est bizar c'est que j'arrive à simuler {ALT + TAB + /TAB + /ALT} grâce à la fonction SendInput() mais pas ALT + combinaison de chiffres...

Est-ce que quelqu'un a une idée ?
Merci beaucoup

Je joins les codes que j'ai essayé... si quelqu'un voit ce qui cloche


#include <windows.h>
#include <WinAble.h>

int main(int argc, char * argv[]) {

// Mise d'Open Office au premier plan
HWND hMPlayer = FindWindow("SALFRAME",NULL);
SetForegroundWindow(hMPlayer);
Sleep(100);

// simulation 'ß' Première version
keybd_event( VK_MENU, 0, KEYEVENTF_EXTENDEDKEY, 0); // Appuis ALT
keybd_event( 98, 0, 0, 0); // Appuis '2'
keybd_event( 98, 0, KEYEVENTF_KEYUP, 0); // Relachement '2'
keybd_event( 98, 0, 0, 0); // Appuis '2'
keybd_event( 98, 0, KEYEVENTF_KEYUP, 0); // Relachement '2'
keybd_event( 101, 0, 0, 0); // Appuis '5'
keybd_event( 101, 0, KEYEVENTF_KEYUP, 0); // Relachement '5'
keybd_event( VK_MENU, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); // Relachement ALT

// simulation 'ß' Deuxième version
INPUT input[8];
input[0].type = input[7].type = INPUT_KEYBOARD;
input[0].ki.wVk = input[7].ki.wVk = VK_MENU; // 0 - Appui ALT
input[7].ki.dwFlags = KEYEVENTF_KEYUP; // 7 - Relachement ALT
input[1].type = input[2].type = INPUT_KEYBOARD;
input[1].ki.wVk = input[2].ki.wVk = 98; // 1 - Appui '2'
input[2].ki.dwFlags = KEYEVENTF_KEYUP; // 2 - Relachement '2'
input[3].type = input[4].type = INPUT_KEYBOARD;
input[3].ki.wVk = input[4].ki.wVk = 98; // 3 - Appui '2'
input[4].ki.dwFlags = KEYEVENTF_KEYUP; // 4 - Relachement '2'
input[5].type = input[6].type = INPUT_KEYBOARD;
input[5].ki.wVk = input[6].ki.wVk = 101; // 5 - Appui '5'
input[6].ki.dwFlags = KEYEVENTF_KEYUP; // 6 - Relachement '5'
::SendInput(8, input, sizeof(INPUT));

return 0;
}
A voir également:

5 réponses

rubynette
 
bonjour,
en fait j'aimerai mettre des caracteres spéciaux sur mon blogs et je suis allé dans les générateurs mais ils me disent de copier coller et ça marche pas!!
si vous savez comment faire merci de m'aider!!
0
Ato
 
bonjour,
j'ai le même problème, je n'arrive pas à écrire en automatique certaines lettre . par ex : alt + 0203 = Ë. Si je le fais a la main, ca marche, mais en automatique avec keybd_event, ca marche pas ...
si quelqu'un a une solution, je suis tres prenneur
Merci
Ato
0
Làpourt'aider
 
Voilà Quelques Une ^.^

Alt + 0223 = ß
Alt + 2 ? (un smiley)
Alt + 3 = ? (coeur au fond rempli)
Alt + 5 = ?
Alt + 6 = ?
Alt + 7 = *
Alt + 9 = ?
Alt + 10 = ?
Alt + 11 = ?
Alt + 12 = ?
Alt + 13 = ?
Alt + 15 =? (soleil)
Alt + 14 =? (note de musique double)
Alt + 18 = ?
Alt + 19 = ?
Alt + 20 = ¶
Alt + 21 = §
Alt + 24 = ?
Alt + 25 = ?
Alt + 26 = ?
Alt + 27 = ?
Alt + 28 = ?
Alt + 29 = ?
Alt + 30 = ?
Alt + 31 = ?
alt + 145 = æ
Alt + 157= Ø
Alt + 155= ø
Alt + 168 = ¿
Alt + 169 = ®
Alt + 170 = ¬
Alt + 174 = «
Alt + 175 = »
Alt + 177 = ?
Alt + 178 = ?
Alt + 180 = ?
Alt + 184 = ©
Alt + 185 = ?
Alt + 186 = ?
Alt + 187 = ?
Alt + 188 = ?
Alt + 189 = ¢
Alt + 190 = ¥
Alt + 191 = ?
Alt + 192 = ?
Alt + 193 = ?
Alt + 194 = ?
Alt + 195 = ?
Alt + 196 = ?
Alt + 197 = ?
Alt + 200 = ?
Alt + 201 = ?
Alt + 202 = ?
Alt + 203 = ?
Alt + 204 = ?
Alt + 205 = ?
Alt + 206 = ?
Alt + 208 = ð
Alt + 209 = Ð
Alt + 213 = ?
Alt + 217 = ?
Alt + 218 = ?
Alt + 219 = ?
Alt + 220 = ?
Alt + 225 = ß
Alt + 231 = þ
Alt + 232 = Þ
Alt + 238 = ¯
Alt + 241 = ±
Alt + 242 = ?
Alt + 246 = ÷
Alt + 250 = · (différent du point normal .)
Alt + 251 = ¹ (exposant 1)
Alt + 252 = ³ (exposant 3)
Alt + 253 = ² (exposant 2)
Alt + 254 = ?
Alt + 433 ?
Alt + 434 ?
Alt + 499 = Y
alt +754 = ?
Alt + 785 = ?
Alt + 925 = Ø
alt + 999 = þ
Alt + 3331 = ?
alt + 12151214 = «
alt + 12151215 = »
0
Alexandre Perron
 
Utilise une fonction du genre :


static void SendString(LPCTSTR str) {
INPUT inp[2];
memset(inp,0,sizeof(INPUT));
inp[0].type = INPUT_KEYBOARD;
inp[0].ki.dwFlags = KEYEVENTF_UNICODE; // to avoid shift, and so on
inp[1] = inp[0];
inp[1].ki.dwFlags |= KEYEVENTF_KEYUP;

for (LPCTSTR p=str; *p; p++) {
inp[0].ki.wScan = inp[1].ki.wScan = *p;
SendInput(2, inp, sizeof(INPUT));
}
}

Tu pourras envoyer même des caractères qui ne se trouvent pas sur ton clavier.

http://msdn.microsoft.com/msdnmag/issues/05/01/CQA/
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zarathoustra
 
hé thoams pourasi tu me passer ton adresse email, msn ou autre pour parler de ton clavier-simulation?

en tout cas bonne chance dans ton projet!
-1