• <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 肥仔 閱讀(1213) 評論(0)  編輯 收藏 引用 所屬分類: Windows開發

            久久久久国产一级毛片高清板| 国内精品久久久久久久久电影网| 久久久久青草线蕉综合超碰| 亚洲精品国产字幕久久不卡| 久久久久成人精品无码中文字幕 | 国产综合成人久久大片91| 精品无码人妻久久久久久| 久久久久青草线蕉综合超碰 | 欧美精品一区二区精品久久| 久久天天躁狠狠躁夜夜av浪潮| 日韩精品无码久久久久久| 蜜桃麻豆www久久| 99精品久久久久久久婷婷| 久久精品无码av| 狠狠色丁香久久综合婷婷| 久久天天婷婷五月俺也去| 99久久精品九九亚洲精品| 久久久久亚洲AV无码专区体验| 久久免费视频一区| 久久99热狠狠色精品一区| 亚洲中文字幕无码久久精品1 | 国产精品一区二区久久国产| 一级a性色生活片久久无| 99久久精品国产综合一区| 色综合久久久久久久久五月| 中文成人无码精品久久久不卡 | 18岁日韩内射颜射午夜久久成人| 三上悠亚久久精品| 久久无码高潮喷水| 亚洲精品高清一二区久久| 精品多毛少妇人妻AV免费久久| 久久精品免费观看| 久久97精品久久久久久久不卡| 久久中文骚妇内射| 久久久久久国产精品无码超碰| 亚洲中文字幕久久精品无码APP| 亚洲精品美女久久久久99小说 | 久久精品国产福利国产琪琪 | 亚洲精品无码久久久久| 久久精品国产亚洲AV影院| 久久人人添人人爽添人人片牛牛 |