Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1573 connectés 

  FORUM HardWare.fr
  Programmation

  [ programmation systeme] => lisez donc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ programmation systeme] => lisez donc

n°55548
pymousses
Posté le 27-08-2001 à 16:03:46  profilanswer
 

Je cherche à faire un prog du style des programmes systemes.  
Je m'explique avec un exemple : Sous win, qd on clique droit une fenetre apparait. Un p'tit ctr_alt_del va faire de même qu'on soit sous photoshop en train de faire de jolie graph, ou sous un autre prog. C'est qu'en faite le systeme fait une boucle infinie pour savoir si l'user à fait un ctr_alt_del ou un clique droit. Bref, comment creer un programme de ce genre. Qui va ecouter gentiment que l'user fasse si ou ca bien que son programme n'ai pas la main.


---------------
From Pymousses.
mood
Publicité
Posté le 27-08-2001 à 16:03:46  profilanswer
 

n°55566
C_Po_Ma_Fa​ute
Posté le 27-08-2001 à 16:22:06  profilanswer
 

pymousses a écrit a écrit :

Je cherche à faire un prog du style des programmes systemes.  
Je m'explique avec un exemple : Sous win, qd on clique droit une fenetre apparait. Un p'tit ctr_alt_del va faire de même qu'on soit sous photoshop en train de faire de jolie graph, ou sous un autre prog. C'est qu'en faite le systeme fait une boucle infinie pour savoir si l'user à fait un ctr_alt_del ou un clique droit. Bref, comment creer un programme de ce genre. Qui va ecouter gentiment que l'user fasse si ou ca bien que son programme n'ai pas la main.  




 
ça m'étonnerait :sarcastic:

n°55569
Carbon_14
Posté le 27-08-2001 à 16:26:19  profilanswer
 

Le menu du click droit, c'est l'application sur laquelle on clique qui le gère/génère. Si c'est le bureau, c'est Windows qui sait quoi faire, si c'est sur ma feuille, c'est moi qui sait ce que je veux qu'on affiche (par soft). :)  
 
 :??: C'est pour détourner les messages interceptés par Windows avant lui pour prendre la main dessus ?

n°55583
pymousses
Posté le 27-08-2001 à 16:52:51  profilanswer
 

C_Po_Ma_Faute a écrit a écrit :

 
 
ça m'étonnerait :sarcastic:  




 
explique toa.


---------------
From Pymousses.
n°55588
pymousses
Posté le 27-08-2001 à 16:57:24  profilanswer
 

CARBON_14 a écrit a écrit :

Le menu du click droit, c'est l'application sur laquelle on clique qui le gère/génère. Si c'est le bureau, c'est Windows qui sait quoi faire, si c'est sur ma feuille, c'est moi qui sait ce que je veux qu'on affiche (par soft). :)  
 
 :??: C'est pour détourner les messages interceptés par Windows avant lui pour prendre la main dessus ?  




 
Un exemple concret (encore un) :
Style, pour ceux ki connaisse softice, le prog est chargé en memoire au lancement du systeme. Et un controle-d lance le debugger. Je cherche à faire un prog du style qui va effectuer une action suivant une autre à n'importe quel endroit.
 
par exemple un contrôle-d à un moment donné va faire appraître une boite de message "C cool CA marche".
 
Putain!!!!!!! Ouf.


---------------
From Pymousses.
n°55624
C_Po_Ma_Fa​ute
Posté le 27-08-2001 à 18:04:41  profilanswer
 

pymousses a écrit a écrit :

 
 
explique toa.  




 
et bien tu trouves pas que pour réagir à des évênements utilisateur, une boucle infinie vériant à chaque fois si une touche a été enfoncée ce serait lourd ?
le clavier (comme tous les périphériques) génère une interruption matérielle lorsqu'il est activé, cette interruption est ensuite traitée par le système... je ne m'étends pas sur le sujet, tu trouveras facilement des tas de sites qui expliquent ça mieux que moi ;)
 
 
Il faut simplement que ton appli (qui tournera en tache de fond) intercepte le message window correspondant à l'évênement que tu souhaite traiter :D

n°55645
gizmo
Posté le 27-08-2001 à 20:35:48  profilanswer
 

euh, oui, c'est à peu près ca, sauf que dans le cas présent c'est pas une iterruption matériel, ca serait beaucoup trop lourd pour les périph si chaque action de ce type était traité comme interruption matériel. Ici, c'est une interruption soft.
Si tu veux plus de doc, cherche dans les moteur de recherche a programmation évennementielle.

n°55667
Ace17
Posté le 27-08-2001 à 22:11:32  profilanswer
 

Je pense qu'en effet une boucle infinie c'est lourd!!!
Mais intercepter une intéruption matérielle sous Win32.... c'est pas le plus simple non plus...
Le coup du message windows, c pas possible non plus car il sera envoyé a l'appplication qui a le focus; Non, le mieux ce serait de faire la boucle infinie, de vérifier la touche avec GetAsyncKeyState; Mais définir une priorité minimale a l'application grace a SetPriorityClass et SetThreadPriority
Et si ca ne suffit pas completer avec des Sleep qui pendant l'attente attribuent toute la priorité aux autres processus..

n°55676
C_Po_Ma_Fa​ute
Posté le 27-08-2001 à 22:37:52  profilanswer
 

je persiste à dire que le clavier génère une interruption matérielle (IRQ1) à chaque appui de touche :sol:  
 
pour les racourcis clavier (comme ceux de Windows), ce sont des interruptions soft, si on peut employer ce terme :/ mouais

n°55681
gizmo
Posté le 27-08-2001 à 22:47:29  profilanswer
 

C_Po_Ma_Faute a écrit a écrit :

je persiste à dire que le clavier génère une interruption matérielle (IRQ1) à chaque appui de touche :sol:  
 
pour les racourcis clavier (comme ceux de Windows), ce sont des interruptions soft, si on peut employer ce terme :/ mouais  




 
Oui, moi on m'a appris a diférencier, les interruptions comme écriture sur un périph ou libération d'une ressource et les interruptions "classiques" comme le clavier et la souris qui ne sont pas traitées de la même manière.

mood
Publicité
Posté le 27-08-2001 à 22:47:29  profilanswer
 

n°55702
pymousses
Posté le 28-08-2001 à 02:14:58  profilanswer
 

:bounce: Comment faire pour ke le programme se lance automatiquement en tâche de fond. Existe t'il une api?
Mais sous windows je précise. Donc pas de & !!!

n°55707
aqwsezsxdr
Posté le 28-08-2001 à 02:46:02  profilanswer
 

pour le clavier, y'a bcp plus simple ca s'appelle les HOOK.
Regarde l'aide de SetWindowsHookEx avec comme idHook WH_KEYBOARD.
Ta fonction qui va intercepter les frappes au clavier, faut qu'elle soit dans une dll, pour intercepter toutes les frappes (sauf je crois le ctrl+alt+del qui est gere directement par le driver).
 
En lisant attentivement la msdn, on s'en sort tres vite et tu est prevenu de chaque frappe au clavier, les mots de passe, n'y resistent pas trop ;) .

n°55708
pymousses
Posté le 28-08-2001 à 02:58:31  profilanswer
 

aqwsezsxdr a écrit a écrit :

pour le clavier, y'a bcp plus simple ca s'appelle les HOOK.
Regarde l'aide de SetWindowsHookEx avec comme idHook WH_KEYBOARD.
Ta fonction qui va intercepter les frappes au clavier, faut qu'elle soit dans une dll, pour intercepter toutes les frappes (sauf je crois le ctrl+alt+del qui est gere directement par le driver).
 
En lisant attentivement la msdn, on s'en sort tres vite et tu est prevenu de chaque frappe au clavier, les mots de passe, n'y resistent pas trop ;) .  




 
Peut tu m'expliquer le mecanisme de la dll pour eclaircir le fait que la fonction doit se trouver dans une dll. Merci.


---------------
From Pymousses.
n°55709
aqwsezsxdr
Posté le 28-08-2001 à 03:12:14  profilanswer
 

bah, tu cree une dll tout ce qu'il y a de plus banal avec une fonction qui a ce protoype
 
LRESULT CALLBACK KeyboardProc(
  int code,       // hook code
  WPARAM wParam,  // virtual-key code
  LPARAM lParam   // keystroke-message information
);
 
tu peux changer le nom KeyboardProc si tu veux.  
Ensuite ds ton prog qui installe le hook, tu appelle un loadlibrary qui te retourne un handle. Ce handle, tu le passe au SetWindowsHookEx en 3eme param et il te permet aussi de recuperer un ptr sur ta fct : GetProcAddress, ptr que tu fournit aussi au SetWindowsHookEx en 2eme param . Et voila le travail d'une simplicite biblique.
 
Si tu veux seulement ecouter les events clavier pour ton appli, t'as pas besoin de dll.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [ programmation systeme] => lisez donc

 

Sujets relatifs
[VC++] 2 questions orientés systeme..[C++] Programmation des interruptions matérielles
[ programmation reseau] -> detecter une connexionURGENT , PROGRAMMATION D'UN MODEM
[Super newbie] : se lancer dans la programmation !Programmation d'un shoot'em up
systeme et diskC++ /Controle CStatic créer affiché par programmation
Question sur la programmation des fichiers *.bat ?Question pour les pros du fichier *.bat (programmation)
Plus de sujets relatifs à : [ programmation systeme] => lisez donc


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR