| 
             
              ソスソスVisual C++ Q & Aソスfソスソスソスソス
             
           | 
        
ソスEC/C++
        ソスEDelphi
        ソスEVisual BasicソスソスソスSソスソス
        ソス@(VB2-VB6ソスソス.NETソスソスソスp)
        ソスEVisual Basic(VB2-VB6)
        ソスEVisual Basic .NET
        ソスEVisual C++
ソスソスルど、iPhoneソスソスソス逑奇ソスeソスソスソスソスソス逡カソスソスソスソスソスソスソスソスソストゑソスソスワゑソスソスソスソスフで、ソスト度ソスソスソスeソスvソスソスソスワゑソスソスB
        
        ソスソスソスン、ソス}ソスEソスXソスフソスソス[ソスソスソスxソスソスソスtソスbソスNソスソスgソスpソスソスソスソス
        ソス}ソスEソスXソスフ「ソス゚ゑソスvソスニ「ソスiソズ」ソスソスソスソスソスヨゑソスソスソスAソスvソスソスソスソス
        ソス成ソスソスソストゑソスソスワゑソスソスB
        ソスtソスbソスNソスナ、ソス{ソス^ソスソスソスソスソスソスソスソスEソスソスソスソスソスヘ出ソスソスソスソスソスフでゑソスソスソスソスA
        ソスソスソスソスヨゑソスソス驍アソスニゑソスソスナゑソスソスワゑソスソスソスB
        ソスソスソスソスソスソスソスXソスソスソスソスソスソスソス閧「ソスソスソスワゑソスソスB
        
        ソスネ会ソスソスAソスtソスbソスNソスソスソスソスソスフコソス[ソスhソスナゑソスソスB
        
        LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam) 
        {
            BOOL bHandle = FALSE; 
            MSLLHOOKSTRUCT *pmsllhook = (MSLLHOOKSTRUCT *)lParam; 
        
            if (nCode == HC_ACTION) { 
                switch (wParam) 
                { 
                case WM_XBUTTONUP: 
                case WM_XBUTTONDOWN: 
                    switch (HIWORD(pmsllhook ->mouseData)) 
                    { 
                    case VK_XBUTTON1: 
                        // ソスソスソスソスソストゑソスソスソスrソスbソスgソス落とゑソス 
                        pmsllhook->mouseData &= ‾VK_XBUTTON1 << 16; 
                        // XBUTTON2ソスフソスソスbソスZソス[ソスWソスソスZソスbソスgソスソスソスソス 
                        pmsllhook->mouseData |= VK_XBUTTON2 << 16; 
                        break; 
        
                    case VK_XBUTTON2: 
                        // ソスrソスbソスgソス落とゑソス 
                        pmsllhook->mouseData &= ‾VK_XBUTTON2 << 16; 
                        // XBUTTON1ソスフソスソスbソスZソス[ソスWソスソスZソスbソスgソスソスソスソス 
                        pmsllhook->mouseData |= VK_XBUTTON1 << 16; 
                        break; 
                    }
                    break; 
        
                default: 
                    break; 
                } 
            }
        
            return CallNextHookEx(hHook2, nCode, wParam, lParam); 
        }
ソスJソスソスソスツ具ソスソスソスWinXP+VC6ソスナゑソスソスB
HIWORD(pmsllhook ->mouseData)ソスノ難ソスソスソスソストゑソスソスソスフゑソス VK_ソスEソスEソスEソスソスソスソスネゑソスソスソス
        XBUTTON1 ソスソスソスソス XBUTTON2ソスフはゑソスソスナゑソスソスヒ。MSLLHOOKSTRUCTソスフ撰ソスソスソスソス
        ソスmソスFソスソスソストゑソスソスソスソスソスソスソスソスB
        ソスワゑソスソスAソスNソスソスソスCソスAソスソスソスgソスOソスフ場合ソスソスX-ソス{ソス^ソスソスソスCソスxソスソスソスgソスヘ別のソスソスbソスZソス[ソスWソスソス
        ソスネゑソスワゑソスソスBソスソスソスソスソスモゑソスソスソスソスソスソスソス(ソスソスソスソスソスソスLソス}ソスjソスソスソスAソスソスソスノ擾ソスソスソスソストゑソスソスソスワゑソス)ソスB
        
        ソスソスソスネみに、WM_XBUTTONDOWNソスソスソスソスソストゑソスソスソスフは確ソスFソスソスソスワゑソスソスソスソスソス(ソスソスソスソス)ソスB
>ソスソスソスVソスl
        
        VK_XBUTTON1ソスヘコソスソスソスpソスCソスソスソスソスソスハゑソスネゑソスソスソスソスソスソスラ、ソスソスソスソスソスナ宣言ソスソス
        ソスlソスヘ「1ソスvソスソスソスソスソストゑソスソスワゑソスソスソスソスB
        (ソス{ソスソスソスフ値ソスナゑソスcaseソスソスソスノ難ソスソスソスネゑソスソスソスソスソスソスフで、ソスfソスoソスbソスOソスソスソスlソスソスマ更ソスソスソスワゑソスソスソスソスB)
        
        WM_XBUTTONDOWNソスソスソスソスソストゑソスソスソスフは確ソスFソスソスソスワゑソスソスソスソスB
        
        CallNextHookExソスソスソスソスsソスソスソスソスOソスノ会ソスソスソスソスKソスvソスネのでゑソスソス蛯、ソスソスソスH
>VK_XBUTTON1ソスヘコソスソスソスpソスCソスソスソスソスソスハゑソスネゑソスソスソスソスソスソスラ、ソスソスソスソスソスナ宣言ソスソス
        >ソスlソスヘ「1ソスvソスソスソスソスソストゑソスソスワゑソスソスソスソスB
        VK_XBUTTON1ソスヘ最新ソスソスWin32SDKソスナは、ソスワゑソスソスソスソスソスソスルなゑソスpソスrソスフ抵ソス`ソスマみゑソス
        ソスソスソスlソスニなゑソスソストゑソスソスワゑソスソスBソスナ新ソスソスSDKソスソスソスノ難ソスソスソスワゑソスソス蛯、ソスBソスソスソスソスソスナ抵ソス`ソスソスソスソス
        ソスノゑソスソストゑソスXBUTTON1ソスソスgソスソスソスラゑソスソスナゑソスソスB
        ソスソスソスネみゑソス XBUTTON1ソスソスXBUTTON2ソスソスソスソスソスヨゑソスソスソスツゑソスソスネゑソスホ、
        case XBUTTON1:ソスフ趣ソスソスヘ趣ソスソスフようソスノなゑソスニ思ソスソスソスフでゑソスソスソスソスAソスヌゑソスソスナゑソスソス蛯、ソスB
          pmsllhook->mouseData
               = (DWORD)MAKELONG( LOWORD( pmsllhook->mouseData), XBUTTON2);
        ソスソスソスネみにフソスbソスNソスRソス[ソスhソスノつゑソスソストはゑソスソス示の包ソスソスソスソスソスソスソスソスソスソストゑソスソスソスニゑソス
        ソスソスソスソスソス謔、ソスソスソスソスソスソスワゑソスソスソスB
ソスuVC++6ソスナ使ソスソスソスソスナ新ソスソスPlatformSDKソスvソスナゑソスソスソス_ソスノは抵ソスソスモゑソスソスKソスvソスソスソスソスmソスソスワゑソスソスソスB
        
        ソスソスソスソスソスフボソス^ソスソスソスソスソスソスソスソスソス黷スソスソスヤの場合ソスノ、HIWORD(pmsllhook->mouseData)ソスノはどゑソスネ値ソスソスソスZソスbソスgソスソスソスソスソスソスナゑソスソス蛯、ソスソスソスヒ?
        # WM_XBUTTONUPソスフ場合ソスヘ…ソスソスソスソスソス黷スソス鼾ソスHソスHソスH
        
        ソスdソスlソスIソスノは…16ソス{ソス^ソスソスソスワでのマソスEソスXソスノ対会ソスソスナゑソスソスソスcソスソスナゑソスソス蛯、ソスソスソスヒゑソスソスcソスcソスB
>ソスソスソスソスソスフボソス^ソスソスソスソスソスソスソスソスソス黷スソスソスヤの場合ソスノ、HIWORD(pmsllhook->mouseData)ソスノはどゑソスネ値ソスソスソスZソスbソスgソスソスソスソスソスソスナゑソスソス蛯、ソスソスソスヒ?
        
        XBUTTON1ソスソスXBUTTON2ソスソスソスtソスソスソスOソスニゑソスソスソスORソスソスソスソス驍アソスニはゑソスソスソスワゑソスソスソスB
        ソズゑソスソスソスAソスソスソスフようソスネゑソスソスニゑソスソスソスソストゑソスソスソスlソスフ指ソスフ鯉ソスソスNソスソスソスソスソスOソスソスソスソスワゑソス(vv;)ソスB
>ソスソスソスVソスl
        ソスソスソスソスソスソスソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスB
        caseソスソスソスフ抵ソスソスソスソスソスソスソスト抵ソスソスソスソスソス
        >  pmsllhook->mouseData
        >       = (DWORD)MAKELONG( LOWORD( pmsllhook->mouseData), XBUTTON2);
        ソスノ変更ソスソスソスワゑソスソスソスソスソスソスAソスソスソスソスヘ変ゑソスソスワゑソスソスソスナゑソスソスソスソスB
        
        >ソスソスソスネみにフソスbソスNソスRソス[ソスhソスノつゑソスソストはゑソスソス示の包ソスソスソスソスソスソスソスソスソスソストゑソスソスソスニゑソス
        >ソスソスソスソスソス謔、ソスソスソスソスソスソスワゑソスソスソスB
        ソス}ソスEソスXソスフ「ソス゚ゑソスvソスuソスiソズ」ソスソスソスソスソスヨゑソスソスソスノはマソスEソスXソスフソスソス[ソスソスソスxソスソスソスtソスbソスN
        ソスナボソス^ソスソスソスソスソスソスソスヨゑソスソスト、CallNextHookExソスノ渡ソスソスソスホ趣ソスソスソスソスoソスソスソスソスニ思ソスソスソスソスソスフゑソス
        ソスtソスbソスNソスソスソスソスソスフみ掲ソスレ致ソスソスソスワゑソスソスソスソスB
        ソスソスソスノはどの包ソスソスソスソスソスソスKソスvソスナゑソスソス蛯、ソスソスソスH
        (ソスtソスbソスNソスフ設抵ソスEソスソスソスソスネど?)
ソスワゑソスソスソスソスソスソスソスソスソスソスソスソスソスソス痰「ソスワゑソスソスソスソスB
        ソスソスソスソスソスソスソスソスソスソスソスソスソスソスeソスソス
        
        pmsllhook->mouseData = (DWORD)MAKELONG( LOWORD( pmsllhook->mouseData), XBUTTON2);
        
        ソスナゑソスソスB
        ソスソスソスソスソスソスソスAソスネゑソスiPhoneソスソスソス迴托ソスソスソスソスソズと一部ソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスフでゑソスソス蛯、ソスソスソスHソスiソス|ソスQソス|ソスGソスj
ソスtソスbソスNソス@ソス¥ソスソスソスソスソスナの奇ソス{ソスIソスネゑソスソスニゑソスvソスソスソスツゑソスソスワま擾ソスソスソスソスソス
        1.ソスソスソスソスソスソスDLLソスノ行ソスソスネゑソスソスソスホなゑソスネゑソスソスB
        2.ソスtソスbソスNソスフイソスソスソスXソスgソス[ソスソスソスソス
        ソス@ソス@HHOOK hh=SetWindowsHookEx(
                   WH_MOUSE_LL,(HOOKPROC)MouseProc,hDll,0);
        3.ソスtソスbソスNソスフ会ソスソスソスソス
        ソス@ソス@UnhookWindowsHookEx(hh);
        4.ソスtソスbソスNソスvソスソスソスVソス[ソスWソスソスソスソス
          LRESULT CALLBACK MouseProc(
             int nCode,WPARAM wParam,LPARAM lParam)
          {  if(nCode<0||nCode==HC_NOREMOVE){
               return CallNextHookEx(
                g_hHookMouseWnd, nCode, wParam, lParam);
             }
             MSLLHOOKSTRUCT  * lp = (MSLLHOOKSTRUCT  *)lParam;
             if( nCode == HC_ACTION ){
                switch(wParam){
                   //ソスソスソスソスソスソスソスソスソス
                }
              }
              return CallNextHookEx(
                  hh, nCode, wParam, lParam); //ソスソスソスフフソスbソスNソスソストゑソス
          }
        ソスソスソスナゑソスソスヒ。ソスワゑソスソスソスソスソストゑソスニは思ソスソスソスワゑソスソスソスソスB
        ソス皷橸ソスmソスFソスソスソスワゑソスソス蛯、(vv;)ソスB
>ソスソスソスVソスl
        
        ソスRソス[ソスhソスソスLソスレ抵ソスソスソスソスLソスうソスソスソスソスソスソスソスワゑソスソスB
        ソスmソスFソスソスソスソスソスニゑソスソスソスAソスソスソスフコソス[ソスhソスニほぼ搾ソスソスルはゑソスソスソスワゑソスソスソスナゑソスソスソスソスB
        4ソスツの確ソスFソスソスソスレ全ソスト厄ソス閧ソスソスワゑソスソスソスB
        
        ソスRソス[ソスソスソスoソスbソスNソスヨ撰ソス(MouseProc)ソスノわたソスソスソス黷スlParamソスフアソスhソスソスソスXソスソス
        ソスソスソスgソスフデソス[ソス^ソスヘ変更ソスナゑソスソスネゑソスソスフでゑソスソス蛯、ソスソスソスH
ソス¥ソスtソスgソスソスソスxソスソスソスナは難しソスソスソスフでゑソスソス蛯、ソスソスソスc
        ソスソスソスフソソスtソスgソス成ソスヘ一時ソスソスソスfソスソスソスワゑソスソスB
        
        ソスAソスhソスoソスCソスXソスソスソスソスソスソスソスソスソスソスソスソスソスAソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスソスソスB