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

Fermé
Thoams Messages postés 4 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 30 décembre 2009 - 13 mai 2007 à 12:53
 Làpourt'aider - 30 déc. 2010 à 14:12
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

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
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
30 déc. 2010 à 14:12
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
20 août 2007 à 16:08
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
30 sept. 2007 à 23:13
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