Salut à tous,
Pour les besoins d'une application je dois réaliser un clavier virtuel, dans le style de celui présent dans Windows.
J'ai donc dans mon appli une page avec un TEdit. Dans l'événement "OnEnter" de ce TEdit, j'appelle ma fiche "Clavier", qui passe donc en premier plan. Sur cette fiche clavier je clique sur le bouton "A", je fais passé ma première fiche en premier plan, j'envoie l'événement clavier correspondant à la touche "A" et le caractère "A" s'affiche dans mon Edit.
Jusque la donc tous va bien.
Mais ensuite j'aimerais que mon clavier reste en premier plan pour saisir la deuxième lettre, mais impossible de faire ça.
Voici mon code :
Le clavier passe en premier plan et j'appuie sur "A"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Appel de mon clavier à partir de la première fiche : void __fastcall TForm1::Edit1Enter(TObject *Sender) { //hFenetre est de type HWND, c'est le handle de ma fiche qui contient le edit FClavierVirtuel->hFenetre = GetForegroundWindow(); FClavierVirtuel->Show(); }
C'est cette ligne qui me pose souci "SetForegroundWindow(hClavier);". Sans elle le clavier fonctionne mais après un clic il reste derrière. Si je met cette ligne pour faire passer ma fenêtre "Clavier" devant ça ne marche plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void __fastcall TFClavierVirtuel::AClick(TObject *Sender) { HWND hClavier = GetForegroundWindow(); SetForegroundWindow(hFenetre); Sleep(50); keybd_event('A',0x29,0,0);// Simulation appuie a keybd_event('A',0x29,KEYEVENTF_KEYUP,0);//Relache a Sleep(50); //SetForegroundWindow(hClavier); }
Avez vous une petite idée ??
Merci d'avance
Partager