mighty_warrior
Messages postés123Date d'inscriptionlundi 12 juin 2006StatutMembreDernière intervention 9 février 2010
-
22 avril 2008 à 20:56
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
23 avril 2008 à 22:48
Bonsoir,
donc ma question: comment convertir un char en sa valeur code touche?
par exemple pour la lettre A on sait que son code touche est 65 mais dans mon programme la lettre est dans un char alors comment récupérer le code touche
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 23 avril 2008 à 11:38
oh la oh la
c'est pas du tout comme ça que Keybd_Event fonctionne :
{Reste appuyé ou relache une touche aKey
en
fonction du paramètre Down}
Procedure
ToogleKey(Const aKey : Byte; Const Down: Boolean = True);
Var KeyDown : Byte;
Begin
If Not Down Then
KeyDown : = 2
Else
KeyDown := 0;
keybd_event(aKey, 0,
KeyDown, 0);
End ;
{Reste appuyé ou
relache les touches Ctrl et Alt
en fonction du paramètrte Down}
Procedure SimuleCtrlAlt(Const Down: Boolean = True);
Var KeyDown : Byte;
Begin
ToogleKey(VK_MENU, Down);
ToogleKey(VK_CONTROL, Down);
End;
{Appuie et relache une touche}
Procedure DoKeybdEvent(Const
aKey : Byte);
Begin
keybd_event(aKey , 0, 0, 0);
keybd_event(aKey ,
0, KEYEVENTF_KEYUP, 0);
End;
{Gère
les touches à bascule VerrMaj VerrNum ArrêtDefil}
Procedure SimuleOnOfKey(Const
aKey: Byte; Const IsOn: Boolean =
True);
Begin
If GetKeyState(aKey)
<> Integer(IsOn) Then
DoKeybdEvent(aKey);
End ;
Procedure
PressKey(Const aKey : Byte);
Begin
ToogleKey(aKey);
End;
Procedure
ReleaseKey(Const aKey : Byte);
Begin
ToogleKey(aKey, False);
End;
{Gère l'appuie n'importe quelle touche du clavier
c'est
la procédure que l'on utilisera pour simuler l'appuie
sur les différentes
touches du clavier}
Procedure
SimuleKey(Const aChar: Char);
mighty_warrior
Messages postés123Date d'inscriptionlundi 12 juin 2006StatutMembreDernière intervention 9 février 2010 23 avril 2008 à 00:03
J'ai réussi à remédier a mon probléme de départ comme ceci:
S := 'texte';
if iskeydown('0') then
begin
for i := 1 to length(s) do
begin
C := S[i];
x := ord(c);
y := 32;
z := x-y;
keybd_event(z,0,1,0);
keybd_event(z,0,2,0);
end;
end;
Donc quand j'appuie sur la touche 0 j'écrit la valeur de S et tout marche bien
Mon second souci c'est que si S vaut par exemple ' delphifr c cool' il sera écrit comme ceci: delphifrccool.
alors y-a t'il un moyen de gérer les espaces?
merci
ps merci [auteur/CARIBENSILA/217111.aspx Caribensila] ton Ord('A') m'a bien aidé.
mighty_warrior
Messages postés123Date d'inscriptionlundi 12 juin 2006StatutMembreDernière intervention 9 février 2010 23 avril 2008 à 00:52
Bon je crois que j'ai de la chance. Je vient de trouver une parade, certe ce n'est sans doute pas la meilleur solution mais bon..je la poste quand même
dans un timer
if iskeydown('0') then //quand j'appuie sur la touche zero
begin
for i : = 1 to length(mot) do
begin
C :=mot[i];
x := ord(c);
y := 32;
z := x-y;
keybd_event(z,0,1,0); //j'appuie sur la touche correspondant a chaque lettre composant "mot"
keybd_event(z,0,2,0);//je relâche la touche correspondant a chaque lettre composant "mot"
inc(NbrCaractere); //
if (NbrCaractere=7)xor(NbrCaractere=10) then // si j'ai ecrit 7 lettres (delphi = 6 lettres +1)
begin
keybd_event(32,0,1,0); //faire un espace
keybd_event(32,0,2,0);
end;
end;
NbrCaractere := 1;
end;
voilà.
mais si quelqu'un a une meilleur solution à proposer je suis preneur lol.