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

Thoams Messages postés 5 Statut Membre -  
 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;
}
Configuration: Windows XP
Firefox 2.0.0.3

5 réponses

  1. 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
  2. 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
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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