begin process at 2012 05 30 06:31:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Récupérer des entrées clavier hors d'une fenêtre Win21


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Récupérer des entrées clavier hors d'une fenêtre Win21

mercredi 6 avril 2005 à 18:17:06 | Récupérer des entrées clavier hors d'une fenêtre Win21

Taranael

Salut ! Bon j'ai un problème pour un p'tit programme idiot que j'ai fait, c'est un piano tout con en C qui joue de la musique avec votre tourelle quand on appuie sur les touches du clavier ( en gros c'est un switch et un getch dans un while , rien de bien extra-ordinaire). Maintenant je voudrais que mon programme puisse lire les touches enfoncée du clavier même en dehors de la fenêtre du programme ! Mon prof m'a conseillé de me renseigner sur SDL, ce que j'ai fait mais le problème reste le même : quand on sort de la fenêtre il s'occupe plus de ce que je fais avec mon clavier !
Si quelqu'un a une idée à me proposer :)
( PS : à terme mon but serait de faire disparaitre cette fenêtre pour n'avoir qu'une icône dans la barre à côté de l'horloge , comme MSN quoi)

Merci d'avance ;)

L'ordinateur fait toujours ce qu'on lui demande !
Le problème c'est qu'il ne comprend pas ce qu'on lui demande ...

mercredi 6 avril 2005 à 22:51:20 | Re : Récupérer des entrées clavier hors d'une fenêtre Win21

LaPatoshe

salut. Alors voila le soucis. Windows est un systeme d'exploitation dans lequel plusieurs programmes peuvent être lancés. chacun de ces programme appelé processus occupe un espace mémoire virtuel alloué par Windows. il est impossible à un programme exe situé dans un espace mémoire intervienne dans un espace mémoire d'un autre programme exe directement. c'est une sécurité de windows. La seule façon de le faire, c'est d'utiliser une procédure de Hook. Il s'agit d'une DLL chargée en mémoire au moyen d'un programme de lancement, DLL qui va détourner des évènements Windows des autrs processus. notre DLL pourra gérer ces évènements dfférement avant de les renvoyer à leur processus initial.
J'ai fait un petit programme de hook pour espionner ce qui est tapé sur ma bécane, je vais le mettre en source, mais je dois le pauffiner un peu. dès qu'il est prêt je te l'envoie.
PS : on utilise une DLL, car c'est le seul programme qui sous Windows peut accéder à des processus différents de celui qui l'a lancé. 

LaPatoshe
jeudi 7 avril 2005 à 00:05:45 | Re : Récupérer des entrées clavier hors d'une fenêtre Win21

BruNews

Administrateur CodeS-SourceS
Quelques exemples de hook:
HOOK SYSTEM SUR WM_MOUSEWHEEL (WIN32)
http://www.cppfrance.com/code.aspx?ID=25998
DLL HOOK EN RESSOURCE BINAIRE DU PROG (WIN32)
http://www.cppfrance.com/code.aspx?id=25450
HOOK F11 SUR IE (WIN32)
http://www.cppfrance.com/code.aspx?id=18202
HOOK CLAVIER
http://www.cppfrance.com/code.aspx?id=17818
LIMITE LE NBR DE FENETRES IE V2 (WIN32)
http://www.cppfrance.com/code.aspx?id=17387
NO TASK MANAGER (WIN32)
http://www.cppfrance.com/code.aspx?id=11186
HOOK DE ENTER SUR DIALOGBOX (WIN32)
http://www.cppfrance.com/code.aspx?id=11007
HOOK SUR FENETRE (WIN32)
http://www.cppfrance.com/code.aspx?id=10997
AJOUTER UN MENU A NOTEPAD (WIN32)
http://www.cppfrance.com/code.aspx?ID=28181

ciao...
BruNews, MVP VC++
jeudi 7 avril 2005 à 04:24:31 | Re : Récupérer des entrées clavier hors d'une fenêtre Win21

racpp

Administrateur CodeS-SourceS
Salut,
Voici un petit programme sans fenêtre qui  joue des notes quand on tape les touches AZERTYUI du clavier quelque soit l'application active. Il utilise le petit haut-parleur de l'unité centrale. Il s'agit d'un hook clavier. Pour arrêter le programme et le hook, tu tapes F12.
#define _WIN32_WINNT 0x0400
#include <windows.h>
HHOOK hHook;  
DWORD notes[8]={523,587,659,698,784,880,987,1046};
LRESULT CALLBACK HookProc ( int nCode, WPARAM wParam, LPARAM lParam)
{
    if  ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN))
    {
        KBDLLHOOKSTRUCT hookstruct = *((KBDLLHOOKSTRUCT*)lParam);
        if (hookstruct.vkCode==VK_F12) PostQuitMessage(0);
        DWORD scan=hookstruct.scanCode;
        if (scan>15 && scan<24)    Beep(notes[scan-16],100);
    }
     return CallNextHookEx(hHook, nCode, wParam, lParam);
}

int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmd,int nShow )
{
    hHook = SetWindowsHookEx( WH_KEYBOARD_LL, (HOOKPROC) HookProc, hInstance, 0);
    MSG Msg;
    while( GetMessage(&Msg, 0, 0, 0))
    {
        TranslateMessage( &Msg );   
    }
    UnhookWindowsHookEx(hHook);
    return 0;
}
Ca fonctionne sur Windows 2000 ou XP. A toi de le perfectionner. J'espère qu'il te sera utile.

jeudi 7 avril 2005 à 09:25:16 | Re : Récupérer des entrées clavier hors d'une fenêtre Win21

Taranael

OKay merci tout le monde je vais étudier cette piste là donc :)
Je sens que je vais me manger une bonne migraine moi pour mes vacances :D
Je posterais mon prog quand je l'aurais fini ;)
Ah et juste j'ai l'air idiot ,c'est bien sur une faute de frappe dans le titre , je parle de Win32 et pas Win21 :)

L'ordinateur fait toujours ce qu'on lui demande !
Le problème c'est qu'il ne comprend pas ce qu'on lui demande ...



Cette discussion est classée dans : problème, récupérer, programme, clavier, fenêtre


Répondre à ce message

Sujets en rapport avec ce message

Problème d'affichage [ par tibob51 ] Bonsoir,J'ai créer un programme de comptage.Donc, a l'execution une icone se place dans le barre des tache rapides et un click dessus fait augmenter l Évènements du clavier [ par mast ] Bonsoir,J'essais d'écrire une petite appli qui détecte les évènements du clavier pour ouvrir des applications. Par exemple F2 ouvrirait firefox, F3 th Problème de fermeture de fenêtre principale [ par tigerskin ] Bonjour !!J'ai un problème avec un programme que j'ai réalisé : tout le déroulement de mon programme se passe bien mais lorsque je quitte ma fenêtre p SLIDER problème d'affichage [ par Omeya ] Bonjour,Je cherche à ajouter un slider à mon programme. Mais depuis que j'en ai ajouté un graphiquement (Visual Studio) dans ma fenêtre principale, ce Hook clavier C++ (ou Java) [ par xmaple ] Bonjour, Voici mon problème, je souhaiterai faire un programme sous windows que je lancerai sur une invite de commande et qui détecterai les touches d Problème avec ma deuxième fenêtre [ par kebabooba ] Bonjour, j'ai créé une deuxième boite de dialog dans mon application, une fois dans le classwizard je crée une nouvelle classe, je l'appelle dans ma f Valeur de retour [ par StayCrunchy ] Bonjour, j'ai un programme A et un autre B. J'aimerai appeler B depuis A et si cela est possible récupérer la valeur de retour de B une fois ce derni détection d'une touche clavier sans arret [ par benorde33 ] Bonjour, Je suis en train de développer un programme en C (console Windows) permettant d'activer des sorties et réceptionner l'état de plusieurs entr problème avec application SDL [ par Aroxan ] Salut à tous. Voici la situation : J'ai codé un programme en utilisant la bibliothèque graphique SDL avec Code::Blocks. Le programme répond parfaitem programme qui rassemble plusieurs petits programmes [ par imanova002 ] bonjour, j suis une débutante en programmation C, a peine j'essaie de faire des programmes de comparaison d'addition d nombres ... Mon problème c'est


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,418 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales