• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            清除無效的托盤圖標

            int CDeleteTrayNullIconDlg::DeleteTrayNullIcon(BOOL &bNullBeDel)
            {
                HWND  hNotify1;
                int iMethod=0;
                bNullBeDel = FALSE;
                HWND  hStatus=::FindWindow("Shell_TrayWnd",NULL);  //
            得到任務欄句柄
                if  (hStatus==NULL) 
                { 
                    //AfxMessageBox ( "Get Shell_TrayWnd error!" );
                    return -1; 
                } 
                HWND  hNotify=FindWindowEx(hStatus,NULL,"TrayNotifyWnd",NULL); //
            右下角區域
                if  (hNotify==NULL)
                { 
                    //AfxMessageBox ( "Get TrayNotifyWnd error!" );
                    return -1; 
                }
            goto1:
                if (iMethod<1)
                {
                    hNotify1=FindWindowEx(hNotify,NULL,"SysPager",NULL);
                    if  (hNotify==NULL) 
                    { 
                        //AfxMessageBox ( "Get SysPager error!" );
                        return -1; 
                    }
                    if (hNotify1==NULL)
                    {
                        hNotify1=hNotify;
                    }
                }
                else
                {
                    hNotify1=hNotify;
                }

                HWND  hNotify1_0=FindWindowEx(hNotify1,NULL,"ToolBarWindow32",NULL);//右下角區域(不包括時間)
                if  (hNotify1_0==NULL)  
                { 
                    //AfxMessageBox ( "Get ToolBarWindow32 error!" );
                    return -1; 
                } 
                //-------------------
            以上是得到任務欄右下腳一塊地方的句柄
                DWORD  pid = 0; 
                GetWindowThreadProcessId(hNotify1_0,&pid); 
                if  (pid==NULL) 
                { 
                    //AfxMessageBox ( "Get pid error!" );
                    return -1; 
                }  
               
                HANDLE  hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_ALL_ACCESS,true,pid); 
                if  (hProcess==NULL) 
                { 
                    //AfxMessageBox ( "Get hd error!" );
                    return -1; 
                } 
                ::SendMessage(hNotify1_0,WM_PAINT ,NULL,NULL);
                CRect rect;
                ::GetWindowRect(hNotify1_0,&rect);
                ::InvalidateRect(hNotify1_0,&rect,FALSE);

                int  iNum=::SendMessage(hNotify1_0,TB_BUTTONCOUNT ,NULL,NULL);  //獲取任務欄上圖標個數
                if (iNum<1 && iMethod==0)
                {
                    iMethod=2;
                    goto goto1;
                }

                unsigned long n = 0; 
                TBBUTTON  *pButton = new TBBUTTON; 
                CString  strInfo = _T(""); 
                wchar_t  name[256] = {0}; 
                TBBUTTON  BButton;
                unsigned   long    whd,proid;
                CString x;
               
                for(int i=0; i<iNum; i++) 
                { 
                    ::SendMessage(hNotify1_0,TB_GETBUTTON,i,(LPARAM)(&BButton)); 
                    ReadProcessMemory(hProcess,&BButton,pButton,sizeof(TBBUTTON),&n);  
                    if  (pButton->iString != 0xffffffff) 
                    { 
                        try 
                        { 
                            ReadProcessMemory(hProcess,(void *)pButton->iString,name,255,&n);
                        }
                        catch(...) 
                        { 
                        }     
                        strInfo.Format("%d : %s ",i+1,CString(name));
                        TRACE(strInfo);
                    }
                   
                    try
                    {  
                        whd=0;  
                        ReadProcessMemory(hProcess,(void *)pButton->dwData,&whd,4,&n);  
                    }  
                    catch(...)
                    {  
                    }  
                    proid=NULL;
                    GetWindowThreadProcessId((HWND)whd,&proid);  
                    if(proid==NULL)
                    {
                        bNullBeDel = TRUE;
                        ::SendMessage(hNotify1_0,TB_DELETEBUTTON,i,0);
                    }
                }
                delete pButton;

                return 0;
            }

            原作者謝紅偉,上代碼我作了幾個地方修改與優化

            #define  WM_NOTIFYICON WM_USER+5

            void CDeleteTrayNullIconDlg::OnButton1()
            {
            BOOL bNullBeDel = FALSE;
            do
            {
              DeleteTrayNullIcon ( bNullBeDel );
            } while ( bNullBeDel );

            NOTIFYICONDATA ni;
            ni.cbSize=sizeof(ni);
            ni.hIcon=m_hIcon;
            //ni.hWnd=m_pMainWnd->m_hWnd;
            //strcpy(nd.szTip, "
            我的托盤");
            ni.uCallbackMessage=WM_NOTIFYICON;
            ni.uFlags= NIF_ICON | NIF_MESSAGE | NIF_TIP ;
            ni.uID=IDR_MAINFRAME;

            Shell_NotifyIcon(NIM_ADD, &ni);
            Shell_NotifyIcon(NIM_DELETE, &ni);
            AfxMessageBox ( "
            清除無效的托盤圖標已經完成", MB_ICONINFORMATION );

            }

            posted on 2011-08-27 15:15 肥仔 閱讀(1210) 評論(0)  編輯 收藏 引用 所屬分類: Windows開發

            久久露脸国产精品| 性欧美丰满熟妇XXXX性久久久 | 天天躁日日躁狠狠久久| 久久久久久久97| 国产精品久久久福利| 精品国产91久久久久久久a | 久久久久久人妻无码| 岛国搬运www久久| 波多野结衣久久一区二区| 久久久久久国产精品免费无码| 日韩精品国产自在久久现线拍 | 色狠狠久久综合网| 久久精品国产亚洲欧美| 久久亚洲AV成人无码| 日韩亚洲欧美久久久www综合网| 亚洲欧美日韩久久精品| 激情伊人五月天久久综合| 久久久综合香蕉尹人综合网| 国产69精品久久久久777| 久久久WWW成人免费毛片| 国内精品久久久久伊人av| 久久丫忘忧草产品| 香蕉aa三级久久毛片 | 久久久WWW成人| 色综合久久88色综合天天 | segui久久国产精品| 久久国产精品一国产精品金尊| 中文成人久久久久影院免费观看| 久久国产精品久久| 国产国产成人精品久久| 精品综合久久久久久888蜜芽| 久久www免费人成看片| 亚洲人成无码网站久久99热国产 | 国产精品久久久久久久久久影院 | 久久www免费人成精品香蕉| 欧美精品一本久久男人的天堂| 国内精品久久人妻互换| 精品人妻久久久久久888| 91视频国产91久久久| 97久久超碰国产精品2021| 国产精品久久久久久一区二区三区 |