[C++] clavier-simulation caractères spéciaux
Thoams
Messages postés
5
Statut
Membre
-
Làpourt'aider -
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;
}
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:
- [C++] clavier-simulation caractères spéciaux
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
- Caractère spéciaux - Guide
- Caractères spéciaux - Guide
- Clavier mac caractères spéciaux - Guide
- Clavier de l'ordinateur - Guide
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!!
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!!
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
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
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 = »
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 = »
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/
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/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question