begin process at 2012 05 29 09:00:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

Hook clic droit sur la titlebar


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

Hook clic droit sur la titlebar

vendredi 11 août 2006 à 15:52:24 | Hook clic droit sur la titlebar

reptils

Salut a tous,
J'ai un p'ti probleme avec le programme que j'essaies de faire. Je voudrais faire un virtual desktop, et pour cela j'aimerais que lorsque je clic droit sur la titlebar de n'importe quelle fenetre sur windows, que le hook installé me permette de modifier le menu system de base ("agrandir","reduire","fermer") pour y rajouter un itemmenu "Move to >>" pour choisir le bureaux vers lequel déplacer la fenetre. ça marche à peu pret ce que j'ai fais, mais il y a un p'ti bug c'est que je dois cliquer au moins deux fois pour la modification du menu system prenne effet...
bref vois la partie du code qui est concernée (installation du hook et callback lors du clic droit)
//----------------------------
#include <windows.h>

#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport)
#else
    #define DLL_EXPORT
#endif

static HHOOK m_HookCreatePopUp = NULL;
static HHOOK m_HookOnClicMenu = NULL;
static CWPSTRUCT *cwp;
static HINSTANCE m_hinst=NULL;

enum
{
    ID_SUBMENU_BUREAU=5000,
    ID_MENU_BUREAU1,
    ID_MENU_BUREAU2,
    ID_MENU_BUREAU3,
    ID_MENU_BUREAU4
};

// CallBack interception et création de menu systeme
LRESULT CALLBACK HookCreatePopUp(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HC_ACTION)
    {
        cwp=reinterpret_cast<CWPSTRUCT*>(lParam);
        if((cwp->message)==WM_INITMENUPOPUP)
        {
            if (HIWORD((HMENU)(cwp->lParam)) == 1)
            {
                    GetSystemMenu(cwp->hwnd,true);
                    HMENU menu = GetSystemMenu(cwp->hwnd,false);
                    HMENU submenu = CreatePopupMenu();
                    AppendMenu(submenu,MF_STRING,ID_MENU_BUREAU1,"Bureau 1");
                    AppendMenu(submenu,MF_STRING,ID_MENU_BUREAU2,"Bureau 2");
                    AppendMenu(submenu,MF_STRING,ID_MENU_BUREAU3,"Bureau 3");
                    AppendMenu(submenu,MF_STRING,ID_MENU_BUREAU4,"Bureau 4");

                    AppendMenu(menu,MF_SEPARATOR,0,0);
                    AppendMenu(menu, MF_STRING|MF_POPUP,(UINT)submenu, "Déplacer vers");
            }
        }
    }
    return(CallNextHookEx(m_HookCreatePopUp, nCode, wParam, lParam));
}

// Installation du Hook
DLL_EXPORT bool Hook(HWND hwnd)
{
    if(m_hinst==NULL)
    {
        MessageBox(NULL,"m_hinst=NULL","",0);
    }
    m_HookCreatePopUp = SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)HookCreatePopUp,m_hinst,0);
    m_HookOnClicMenu = SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)HookOnClicMenu,m_hinst,0);
    if ((m_HookCreatePopUp != NULL )&&(m_HookOnClicMenu != NULL))
        return true;
    return false;
}
//--------------------------------

Merci d'avance pour votre aide
vendredi 18 août 2006 à 10:38:49 | Re : Hook clic droit sur la titlebar
vendredi 18 août 2006 à 22:55:49 | Re : Hook clic droit sur la titlebar

vecchio56

Administrateur CodeS-SourceS
Je ne vois pas pourquoi le menu ne se modifie pas le premier coup, par contre, j'ai l'impression qu'après, à chaque clic droit, le menu va être modifié, et donc ton sous-menu "Déplacer vers" va se dupliquer, non?

_____________________________________
Un éditeur de ressources gratuit pour Windows



Cette discussion est classée dans : menu, id, mf, submenu, hookcreatepopup


Répondre à ce message

Sujets en rapport avec ce message

Meme ID dans le Menu [ par crocejf2000 ] Dans mon menu,j'ai plusieurs item qui on le meme ID mais pas le meme label. Comment puis-je faire pour recuperer juste le label du menu ou l'utilisate MFC, VC++ 6, MENU [ par safira ] safiraSalut!J'ai un probleme, je dois créer um menu, comme celui-ci:File Edit Open Find Exitmais en utilisant que les fonctions. Je [MFC] Griser menu déroulant [ par Atmaweapon ] J'ai deux questions (dont une qui est 'facultative' a la limite...)Je travaille dans une MFC et ai un menu déroulant (dans le Menu de mon IDR_MAINFRAM Menu pas trés coopératif [ par petitchevalroux ] J'ai fait un menu dans une dialogbox (pas trés catholique tout ça, mais bon!) je recupére ce menu avec m_Menu.LoadMenu(IDR_MENU_LIBRAIRIE); dans OnIn Ressources Win32 [ par bouba ] Bonjour, j'utilise Dev C++ pour coder une application windows. Pour créé des menus et boîtes de dialogue j'utilise un fichier de ressource.MENU_PRINCI SetCheck et PopUpMenu [ par Toutoun13 ] Bonjour, Dans le code suivant j'ai un problème avec un sous menu qui n'est pas checked comme je le voudrais : #define ID_VERSION_LOGICIEL 16000 ON_UP Pb d icones dans les menu [ par gus2647 ] Bonjour,j essaye de mettre des icones dans mes menus en faisant le code suivant mais rien n apparait dans le menuCBitmap m_CheckBitmap ;m_CheckBitmap. wxXmlResource pour creer un menu de signets ftp ??? [ par satellite34 ] bonjour, je développe une application client ftp, je voudrai y implémenter un menu de signets ftp;pour le moment j'ecris mes id's de connection dans u [WINDOWS] Ccomment recuperer le nom des menus de toutes les fenetres ? [ par ZaRMaS ] Bonjour, Je cherche a recuperer le nom des menus de toutes les fenetres ouvertes de windows, mais j'ai quelques problemes avec tous les Handle. voil menu déroulant POPUP [ par artichaud ] hello, je découvre les joies des MFC (VC++6) au boulot (stagiaire, personne qui connait Visual, super)j'ai un popup menu IDR_MAINFRAME dans lequel il


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 : 0,437 sec (3)

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