cs_Manson
Messages postés137Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention30 septembre 2004
-
29 juil. 2003 à 16:16
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 2007
-
31 juil. 2003 à 15:40
Salut a tous,
voila j'arrive a cree un nouveau desktop, dans lequel
j'arrive a executer un cmd (je n'arrive pas a executer autre
chose sauf par l'intermediaire du cmd). J'aimerais
chopper les touches presses pour pouvoir switcher
d'un desktop a l'autre, mais je n'y arrive pas.
Je voudrais chopper le Ctrl+Alt+Droite ou +Gauche.
Si quelqu'un a une idee.
Si quelqu'un a reussi a lancer autres chose qu'un cmd ca serait simpa aussi. J'arrive a lance un nouveau explorer
dans mon nouveau desktop que par l'intermediaire du
cmd.
cs_Manson
Messages postés137Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention30 septembre 2004 29 juil. 2003 à 23:19
Ouai j'ai essasye ca, mais je crois que je mis prend comme
une branche. T'aurais pas un exemple, paske moi j'ai
fais une boucle qui va de 1 a 255, et qui scan chaque.
Mais j'arrive pas a chopper le Ctrol + Alt + autre en meme
temps.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 29 juil. 2003 à 23:40
Salut,
Pour l'idée avec GetAsyncKeyState:
GetAsyncKeyState(VK_KEY)&0x8000 retourne un truc different de 0 si la touche VK_KEY est pressée, sinon 0.
VK_KEY est un virtual key code, voir msdn pour trouver ceux de la touche ctrl alt et droite/gauche.
Pour tester plusieurs touches en meme temp, tu combine les GetAsyncKeyState avec des operateurs logiques.
cs_Manson
Messages postés137Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention30 septembre 2004 30 juil. 2003 à 15:17
Salut,
Bon ca c'est bon je m'en suis sortie (meme si c'est pas
le top). J'essai maintenant de deplacer une fenetre
d'un desktop a l'autre, mais je n'y arrive pas.Je ne trouve
aucune fonction permettant de le faire.
cs_Manson
Messages postés137Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention30 septembre 2004 31 juil. 2003 à 08:37
Tu pourrais pas me filer un petit exemple de ta technique,
paske moi dans le genre, fonction qui bouffe du cpu y'a pas
mieux. (pourtant j'ai cree un nouveau thread que j'ai
assigne a faible priorite).
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 31 juil. 2003 à 15:40
arf, je suis vraiment desoler, j'avais poster un bout de code tres fonctionnel, mais j'ai du me planter de section, ou il y a eu un probleme au niveau du transfer car effectivement, il n'est pas present :/
bon je reposte... tu va voir, c'est franchement pas compliquer :)
tout d'abbord, je te conseil d'utiliser une structure pour stoquer tes informations :)
cette structure te permettra de stoquer tes infos et de pouvoir les transporter super facilement, car afin d'avoir un code propre, je te conseil d'avoir une fonction qui fait l'acquisition des evenement, et une autre qui les traite, et ainsi dans ta boucle d'evenement, tu n'aura que 2 appels, a moins que tu rajoute du code specifique :)
donc, voila le code :
#include <windows.h>
#include <stdio.h>
typedef struct s_keys
{
int ctrl;
int alt;
int right;
int left;
if (k.ctrl && k.alt && k.right)
printf("Ctrl+Alt+Droite\n");
if (k.ctrl && k.alt && k.left)
printf("Ctrl+Alt+Gauche\n");
Sleep(10);
}
return (0);
}
voila, donc pour expliquer, les 4 expressions ternaires (les lignes ou il y a les appels a GetAsyncKeyState) sont "l'acquisition des evenement", et ceux ci devrais ce trouver dans une fonction... je ne l'ai pas fait la pour que tout soit reuni et plus simple a lire sur le forum :)
ensuite il y a l'affichage par les printf, ceci est le traitement, il ne te suffira plus que d'appeler les fonctions adequates a la place des printf :)
si tu trouve que le code est trop sensible au appuyes de touches, fait a la bourrin et met un petite tempo apres les printf
genre :
if (k.ctrl && k.alt && k.right)
{
printf("Ctrl+Alt+Gauche\n");
Sleep(200);
}
ceci calme la sensibiliter, mais sache que c'est une pute alternative, ce n'est tres franchement pas la meilleure methode, et je te la deconseille presque :)
et pour finir, le petit Sleep(10); que tu voit a la fin de la boucle d'evenement, bah c'est tout simplement une finte super simple pour eviter justement que la boucle bouffe tout le cpu, et tu vera que juste ca, ca le refait tomber a 0% :)
voila, j'espere que ca a pu t'aider et que tu as appris des choses :)