Simuler une séquence d'appuye de touche par préssion de alt gr
cs_devoluti0n
Messages postés22Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention14 juin 2008
-
20 mars 2007 à 20:05
cs_devoluti0n
Messages postés22Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention14 juin 2008
-
26 mars 2007 à 23:16
Bonjour !!
Je débute en Vb et j'aurai aimé de l'aide pour simuler ceci :
Par préssion de Alt Gr, le bouton éspace s'appuye 2fois le plus rapidement possible, et seulement 2 fois, jusqu'a la prochaine préssion de alt gr ou il se relancera 2x etc...
je ne sais pas du tout comment m'y prendre.
J'utilise visual studio 2005.
Bref, c'est bel et bien une question de débutant ^^ mais est-ce que ce code fonctionne sous une application plein écran utilisant directx ? Car le but est de l'utiliser dans un jeu ...
Merci d'avance pour votre aide !!!
Alann.
ps: J'ai également posté ce méssage dans débutants ....
A voir également:
Simuler une séquence d'appuye de touche par préssion de alt gr
cs_devoluti0n
Messages postés22Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention14 juin 2008 21 mars 2007 à 15:47
Trés bien merci, mais comment doit se présenter les choses ? je créé ma form, je double clic dessus pour lui ajouter du code ?
Puis j'ajoute sa comment ? car je n'érive pas à trouver d'éxemple concrets sur le web :(.
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 21 mars 2007 à 23:03
Moi personnelement je te dirais d'acheter un livre pour faire tes debut en Vb.net, car si tu es pas capable de comprendre ce que tu fais ça servira pas a grand chose
dans le meme lien un peux plus bas tu trouveras des bouts de code en version Vb.net, mais j'avou il est pas tres parlant quand on le lit
Alors pour bien comprendre voila un petit exemple !
Dim p
As
New Process
p.StartInfo.FileName =
"notepad.exe"
p.Start()
System.Threading.Thread.Sleep(2000)
AppActivate(
"Bloc-notes")
System.Threading.Thread.Sleep(1000)
SendKeys.SendWait(
"Attention notepad")
AppActivate(
"Bloc-notes")
SendKeys.SendWait(
"~")
SendKeys.SendWait(
"va ce fermer tout seul")
System.Threading.Thread.Sleep(5000)
AppActivate(
"Bloc-notes")
SendKeys.SendWait(
"%fq")
System.Threading.Thread.Sleep(1000)
SendKeys.SendWait(
"{TAB}")
SendKeys.SendWait(
"~")
Si tu comprends pas ce code ou le lien que je tes donné je crain qu'il faut pas te lancé dans la programmation de vb.net sans avoir de livre sous la main !
cs_devoluti0n
Messages postés22Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention14 juin 2008 22 mars 2007 à 22:00
Je comprends à peu prés ton code et j'ai enfin réussi à l'appliquer par préssion de touche, cepandant j'ai 2 soucis :
Si je ne met pas de App activate le sendkey ne marche pas, et donc ne poura pas fonctionner dans mon jeu.
Avec un AppActivate :
si je met :
If e.Shift
Then
Alt gauche fonctionne, celui de droite fonctionne au niveau de la mise en focus mais le texte ne s'envoi pas.
Bref, j'ai donc un souci avec une mise en focus qui d'aprés un ami devrai etre en global, et que mon application doit passer avant toutes les autres.
Mon focus doit pouvoir etre fait sur toutes les applications apparement, meme si mon programme est en tache de fond je suppose.
Et j'ai éalement un souci pour appeler correctement altGr.
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 23 mars 2007 à 13:39
Pour faire ton AppActivate met le dans ton thread !
et si on doit faire tout ton projet je te reconseil d'aprendre a l'aide d'un livre
car ce que tu demande ce sont les rudiments de la programmation (des routines)
Pour le petit bout de code que tu as donné je site :
If e.Shift Then
y a une faut dedans :) il faut toujour faire la vérification de l'appelant type
toto = tata ou encore
toto Is tata ... et ... ext ext ext
je suis pas professionnel et j'ai tout apris dans les ouvrages (livres)
Je te souhaite quand meme une bonne continuation et bon courage !
cs_devoluti0n
Messages postés22Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention14 juin 2008 24 mars 2007 à 17:30
A l'origine ce post a été supprimé de la section débutant donc j'ai pas le choix de le laisser ici.
J'ai bien compris ton texte, mais je bloque vraiment sur le focus, car je veux vraiment que mon application envoye la séquence de touches sur tous les programmes qui ont le focus meme si mon application n'a pas le focus, et c'est la que tout ce joue car tu me dit de mettre mon appactivate dans mon thread, sa je suis ok mais une fois l'action éffectuée je reperds le focus, et c'est la que je suis donc perdu :(.
Quand aux bases, non je les ai pas réelement mais c'est pas dur à comprendre, reste juste à savoir comment s'appele ce que l'on veut faire.
cs_devoluti0n
Messages postés22Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention14 juin 2008 24 mars 2007 à 18:25
Arg il n'y a pas de fonction éditer, bon, du coup j'ai sa là :
Public
Class Owner
Private
Sub Owner_KeyDown(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.KeyEventArgs)
Handles
Me.KeyDown
Dim touche
As Keys
If touche = Keys.RMenu
Then
AppActivate(
"Bloc-notes")
SendKeys.SendWait(
"Test d'envoi de méssage OK")
End
If
End
Sub
et donc sa ne veut pas s'activer sur mon bloc note, donc pour éffectuer le tout sur tous les programmes c'est la misere, (merci de déplacer ce post dans débutant svp ^^)
cs_devoluti0n
Messages postés22Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention14 juin 2008 26 mars 2007 à 23:16
Bon tout sa fonctionne maintenant, par contre j'ai tjs un petit souci, sa fonctionne sur tous mes programe sauf mon jeu qui utilise directdraw.
Et lorsque donc mon jeu se charge, mon jeu se freeze =), une idée ?
en ce qui concerne le lancement du jeu sa se passe comme sa :
Private
Sub Start_Click(
ByVal eventSender
As System.Object,
ByVal eventArgs
As System.EventArgs)
Handles Start.Click
On
Error
GoTo error_Renamed
Dim CDLG1
As
New Process
CDLG1.StartInfo.FileName =
"C:\Program Files\Windows NT\Accessoires\wordpad.exe"
CDLG1.Start()