IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

réaliser un Hook de type WH_CALLWNDPROC


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut réaliser un Hook de type WH_CALLWNDPROC
    Bonsoir,

    Je reviens vers vous afin de trouver une aide salvatrice. Je me suis mis en tête de placer dans une .DLL qq fonctions effectuant un travail sur la 'zone non-cliente' de la TForm appellante.
    J'en suis venu a penser que je devais passer par des Hooks pour gérer le dessin et les évènements (clavier ou souris) tout au long de la 'vie' de la form.
    Pour ce qui est des Hooks claviers et souris, pas vraimment de gros problèmes puisqu'il 'suffit' de suivre le tuto de gRRosminet ici.
    Mais, je cherche a assurer le travail dans la zone non-cliente automatiquement et je pensais devoir passer par un Hook de type WH_CALLWNDPROC.
    Dèja, première question : suis je sur la bonne piste ?
    Ensuite, même si j'obtiens l'effet recherché a première vue (durant les premiers instants), j'obtiens en réalité un tres beau plantage du plus bel effet (qui m'oblige même dans certains cas a rebooter ma machine ! ) ... dois donc y avoir un problème qq part.
    Je touche ici aux limites de mes maigres connaissances, aucune formation théorique ... que voulez vous ...
    Voici je tout petit bout de code concernant le hook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    LRESULT CALLBACK CallWndProc(int nCode,	WPARAM wParam,	LPARAM lParam)
    {
    if (nCode < 0)
    {
    	return CallNextHookEx(VueDonnees->CWHookHandle,nCode,wParam,lParam);
    }
    else
    {
    CWPSTRUCT *msg = (CWPSTRUCT *)lParam;
    	switch (nCode)
    	{
    	case HC_ACTION:
    		if (msg->message == WM_NCPAINT )
    		{
    			if (Bloquer != true)
    			{
    				//'fonctions de dessin' dans la zone non cliente...
    			}
    		}
    		break;
    	default:
    		break;
    	}
    return CallNextHookEx(VueDonnees->CWHookHandle,nCode,wParam,lParam);
    }
    }
    Je ne sais pas trop comment m'en sortir ... ni ce qui est faux dans ce que je fais. J'ai vu qu'il y a des appels possibles a des fonctions telles que VirtualProtect et cie, mais j'avoue être un peu pommé ...

    Merci par avance pour vos conseils,

    @ +

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Sunchaser.
    Je ne connais pas non plus mais apparement ca semble coller avec la Doc et l'aide en ligne, mais pour planter Windows est tu sur des Handlers que tu passe.

  3. #3
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,
    A priori, je dirais qu'il n'y a pas de pointeur 'NULL' a ce stade ... les seuls messages d'erreur que j'ai pu entrevoir ne laissent d'ailleurs pas présager ce
    genre de cas.

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    Personne ne l'aime mon grand méchant hook ...

  5. #5
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    J'aurais peut être du poser cette question dans la rubrique 'Developpement Windows' moi, au fait ... Je suis venu ici presque 'machinalement' mais bon.
    Faut peut être que je demande a ce que qqu'un déplace le sujet, non ?

    Merci,
    @ +

  6. #6
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Citation Envoyé par Sunchaser
    qqu'un déplace le sujet
    Fait

  7. #7
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    Bon a priori, j'ai résolu mon problème ... Il s'agirait de, comment dire, d'un problème de 'portée' des hooks.
    Pour lancer mes hooks, j'ai donc écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ThId = GetCurrentThreadId();
    	 VueDonnees->MouseHookHandle = SetWindowsHookEx(WH_MOUSE,
    											 (HOOKPROC)MouseProc,
    											 NULL,
    											 ThId);
    	 VueDonnees->GMHookHandle = SetWindowsHookEx(WH_GETMESSAGE,
    											 (HOOKPROC)GetMsgProc,
    												 NULL,
    											 ThId);
    C'est peut être idiot pour ceux qui savent 'hooker', mais bon, j'ai ramé ...
    @ +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HOOK] Problème(s) pour réaliser le tutoriel sur les HOOKS
    Par Rodrigue dans le forum C++Builder
    Réponses: 13
    Dernier message: 27/07/2016, 18h22
  2. [WD16] Réaliser un graphe de type courbe ou nuage en fonction du temps
    Par law56100 dans le forum WinDev
    Réponses: 2
    Dernier message: 16/11/2011, 15h11
  3. comment réaliser une animation du type leral.sn
    Par papisdoums dans le forum Flash/Flex
    Réponses: 1
    Dernier message: 11/03/2010, 23h51
  4. Réalisation d'une sélection type lasso
    Par LaDeveloppeuse dans le forum OpenGL
    Réponses: 4
    Dernier message: 18/01/2010, 20h33
  5. [VB.NET] Direction à choisir pour réaliser ce type de Form?
    Par jazz matazz dans le forum Windows Forms
    Réponses: 14
    Dernier message: 21/04/2006, 03h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo