Accueil > Forum > > > > MouseHook avec DialogBox
MouseHook avec DialogBox
jeudi 4 août 2011 à 19:08:27 |
MouseHook avec DialogBox

mouloudh
|
Bonjour la communauté,
Je désespère. Voilà plus d'un mois que je cherchais une solution pour un programme (une souris visuelle qui doit rester toujours visible)-
Cela m'a amené à la découverte du Hook. Un membre du forum m'avait conseillé une doc pour Win32.
J'ai récupéré un source sur le forum (cppfrance_DISTANCE-PARCOURRUE-SOURIS-WIN32-HOOK___Page.zip). Je l'ai modifié comme suit:
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpReserved)
{
// si attachée par un nouveau processus, sauvegarder l'instance de la librarie,
// rechercher la fenêtre destinatrice des messages et récupérer l'Id du message
// (unique dans le système)
if(fdwReason == DLL_PROCESS_ATTACH)
{
m_hDllInstance = hInstance;
m_hWndDest = FindWindow(_T("VMouse_MainFrame"), NULL);
m_MsgMouseHook = RegisterWindowMessage(MSG_MOUSEHOOK);
m_dwProcessId = GetCurrentProcessId();
}
// retour
return TRUE;
}
BOOL MOUSEHOOKAPI InstallHook(HWND hWnd)
{
// si hook déjà installé
if(m_hHook != NULL)
return FALSE;
// installation hook
m_hWndDest = hWnd;
m_hHook = SetWindowsHookEx(WH_MOUSE, MouseProc, m_hDllInstance, 0);
return (m_hHook != NULL);
}
BOOL MOUSEHOOKAPI RemoveHook()
{
// si pas de hook installé
if(m_hHook == NULL)
return TRUE;
// suppression hook
return UnhookWindowsHookEx(m_hHook);
}
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
// en fonction du code
if(nCode == HC_ACTION)
{
if(m_hWndDest && (wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN))
{
// récupération coordonnées de la souris
LPMOUSEHOOKSTRUCT lpmhs = (LPMOUSEHOOKSTRUCT) lParam;
PostMessage(m_hWndDest, m_MsgMouseHook, wParam, 0);
}
}
// retour
return CallNextHookEx(m_hHook, nCode, wParam, lParam);
}
Avec toutes les variables en static, comme à l'origine.
Depuis 2 mois que je cherche à modifier le code de la fenêtre cible, sans succès. Je suis parvenu à vérifier que mon Hook génère le bon code (dans un EditBox), sans plus. Le traitement graphique, echec total.
J'ai décidé de travailler avec un DialogBox pour me simplifier les traitements graphiques, et toujours sans succès! Je ne détecte pas le message du Hook. Je l'ai placé dans OnPaint, toujours rien.
extrait de OnPaint()
.
.
.
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
if(message == m_MsgMouseHook)
MsgMouseHook(wParam, lParam);
CDialog::OnPaint();
}
}
void CVMouseDlg::MsgMouseHook(WPARAM wParam, LPARAM lParam)
{
if(message == m_MsgMouseHook)
{
switch(wParam)
{
case WM_LBUTTONDOWN :
m_CValue = "Left";
DisplayButton(m_CValue);
UpdateData();
break; //Edit_SetText(m_hEdit,"Right")
case WM_RBUTTONDOWN :
m_CValue = "Right";
DisplayButton(m_CValue);
UpdateData();
break; //Edit_SetText(m_hEdit,"Right")
}
}
}
Là, je commence à saturer!
Merci infiniment pour toute aide! si plus de code est nécessaire, évidemment n'hésitez pas! C'est sûr, il est loin d'être parfait.
Make it simple, keep it easy !
|
|
vendredi 5 août 2011 à 09:34:23 |
Re : MouseHook avec DialogBox

buno
|
Hello,
Je pense que tu parles de cette source.
Que cherches-tu à faire exactement?
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
vendredi 5 août 2011 à 23:05:25 |
Re : MouseHook avec DialogBox

mouloudh
|
Bonjour,
Il s'agit bien de cette source. Ce que je souhaite faire est ceci:
au repos, ma souris est:
[ ][ ]
[____]
au clic gauche, je dois avoir:
[X][ ]
[____]
et au clic droit:
[ ][X]
[____]
J'ai réussi à modifier le code du Hook pour détecter le bon clic, puis l'afficher dans l'EditBox, mais ce je souhaite faire, c'est superposer des images bmp, les unes sur les autres. Après tant d'essais, je crois que le mieux pour moi, serait de tenter les Dialog box en MFC, et encore les plus simples, c'est à dire, sans les DocumentViews etc..Mais alors, où, intégrer l'appel du Hook? J'ai essayé dans la classe MyDialog::OnPaint() en y insérant le test if(message == m_MsgMouseHook)
MsgMouseHook(wParam, lParam);
sans succès, MsgMouseHook rends une valeur, et il ne faudrait pas! Enfin, je m'y perds en GROS!
Que faut-il modifier dans le DialogBox pour que Hook soit pris en compte?
Dans la version Win32, j'ai réussi à afficher la première image (aucun clic). J'ai ajouté 2 ou 3 booléens que je modifie par la fonction MsgMouseHook, ensuite je récupère leurs valeurs dans WndProc (où j'ai réussi à mettre le premier affichage), et je pensais qu'avec l'aide des booléens, je pourrais choisir l'image à afficher, une manière d'effacer l'image initiale, puis de mettre à la place la bonne image etc...Mais toujours pas! Et voilà toute l'histoire de ce programme! Encore mille merci pour toute aide.
Make it simple, keep it easy !
|
|
Cette discussion est classée dans : wparam, hook, lparam, if, msgmousehook
Répondre à ce message
Sujets en rapport avec ce message
HOOK - Help [DevCPP] [ par guitoulefoux ]
Bonjour,J'essaye de faire un hook (mon 1er) mais a chaque fois qu'il se lance j'ai un pb d'affectation mémoire.en fait le HOOK récupère les actions cl
Combo des touches dans un Hook [ par bdkiller ]
Salut,encore moi avec les Hooks xDJ'arrive à mettre les hook en place, ca marche, sauf que je sais pas comment faire pour intercepter la combinaison d
Hook clavier sous windows [ par gamani5 ]
sltje sais il y a deja beaucoup de tuto sur le sujet mais j en ai lu plein mais j ai toujours un probleme, j arrive a detecter l utilisation d une tou
Hook messages de windows [ par deck_bsd ]
Bonjour a tous,Voila je suis sur le point de finir mon 1er hook, mais voila , il ne fonctionne que une fois. Il intercepte une fois le message voulu (
Hook clavier et fenêtre premier plan [ par krokro6 ]
Salut à tous, j'ai un petit problème avec ce code la : #include #include #include #include using namespace std;#define DLLEXPORT __declsp
Windows Message OnNotifyIcon [ par unionx ]
bonjourje veux savoir ou je vais trouver la fonction ::OnNotifyIcon(WPARAM wParam, LPARAM lParam) j'ai bien chercher dans la partie ClassWizard et eve
lparam wparam [ par sokotanic ]
salut a quoi cert wpara et lparam , s'il vous plait je veux l'explication de quelqu'un qui avais d'experience pas de msdn ou d'une autre documentati
Combox me bloquant l'appli [ par SnOOpss ]
Bonjour j'ai essayé de simplifier au maximum mon code mais meme codé comme cela j'ai le meme probleme. Tant que je clique par sur le comboBox tout est
Hooks [ par M5i9k ]
Bonsoir,je voulais savoir si il était possible de creer un hook lors du chargement d'un dll c'est à dire dans la fonction DllMain d'un dll, j'essaye d
Boite de dialogue [ par bioopovega ]
Bonjour,J'ai un petit probleme, quand je créer une boite de dialogue dans le fichier main.cpp, je n'est pas d'erreur, mais quand je veux inclure la cr
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|