• <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

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

            清除無效的托盤圖標

            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); //
            右下角區(qū)域
                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);//右下角區(qū)域(不包括時間)
                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);  //獲取任務欄上圖標個數(shù)
                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;
            }

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

            #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 ( "
            清除無效的托盤圖標已經(jīng)完成", MB_ICONINFORMATION );

            }

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

            热久久视久久精品18| 久久婷婷五月综合色奶水99啪| 色妞色综合久久夜夜| 亚洲伊人久久大香线蕉综合图片| 久久99热只有频精品8| 久久se精品一区二区影院| 亚洲AV无码成人网站久久精品大| 国产成人精品久久综合| 亚洲精品乱码久久久久久| 国产精品欧美亚洲韩国日本久久| 久久亚洲美女精品国产精品| 久久精品视屏| 伊人色综合久久| 精品久久久久久无码中文字幕一区| 日韩亚洲国产综合久久久| 久久免费线看线看| 国产91色综合久久免费| 亚洲精品美女久久久久99| 久久亚洲精品国产亚洲老地址| 99久久精品国产一区二区蜜芽| 奇米影视7777久久精品| 亚洲欧美伊人久久综合一区二区| 色欲综合久久躁天天躁| 欧美激情精品久久久久久久 | 久久久久久青草大香综合精品| 国产成人精品综合久久久| 久久久久无码精品国产app| 热99re久久国超精品首页| 国产精品一区二区久久| 波多野结衣中文字幕久久| 久久久久久人妻无码| 国内精品久久久久影院一蜜桃| 久久婷婷五月综合97色一本一本 | 国产精品禁18久久久夂久| 成人国内精品久久久久影院| 精品熟女少妇av免费久久| 99久久99久久精品免费看蜜桃| 精品久久久久久久无码| 情人伊人久久综合亚洲| 伊人久久免费视频| 亚洲国产小视频精品久久久三级 |