如何用自己的程序取代任务栏,最重要的是通知区那块,如何实现已运行的和之后运行的QQ,千千这样的程序的托盘图标

解决方案 »

  1.   

    是吗
    这样啊
    我的意思是WINDOWS系统 任务栏
    用VB程序来模拟,包括开始菜单,快速启动,程序栏,图标,和时间
    其他的还好,问题是有的程序运行后是在系统托盘的,有的最小化后也会缩到系统托盘
    VB如何实时更新这些东西
      

  2.   

    http://www.mndsoft.com/blog/article.asp?id=769
      

  3.   

    自己研究吧我刚刚拦截了一下托盘区的消息,是在关闭千千静听时:<00001> 00010084 S TB_BUTTONCOUNT
    <00002> 00010084 R TB_BUTTONCOUNT nCount:7
    <00003> 00010084 S TB_GETBUTTONINFOW iID:6 lptbbi:00FDF800
    <00004> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00005> 00010084 S TB_GETBUTTONINFOW iID:5 lptbbi:00FDF800
    <00006> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00007> 00010084 S TB_GETBUTTONINFOW iID:4 lptbbi:00FDF800
    <00008> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00009> 00010084 S TB_GETBUTTONINFOW iID:3 lptbbi:00FDF800
    <00010> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00011> 00010084 S TB_GETBUTTONINFOW iID:2 lptbbi:00FDF800
    <00012> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00013> 00010084 S TB_GETBUTTONINFOW iID:1 lptbbi:00FDF800
    <00014> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00015> 00010084 S TB_GETBUTTONINFOW iID:0 lptbbi:00FDF800
    <00016> 00010084 R TB_GETBUTTONINFOW iIndex:False
    <00017> 00010084 S TB_GETBUTTONINFOW iID:0 lptbbi:00FDF7F4
    <00018> 00010084 R TB_GETBUTTONINFOW iIndex:False
    <00019> 00010084 S TB_GETBUTTONINFOW iID:0 lptbbi:00FDF800
    <00020> 00010084 R TB_GETBUTTONINFOW iIndex:False
    <00021> 00010084 S TB_DELETEBUTTON iButton:0
    <00022> 00010084 S TB_BUTTONCOUNT
    <00023> 00010084 R TB_BUTTONCOUNT nCount:7
    <00024> 00010084 S TB_GETBUTTONINFOW iID:6 lptbbi:00FDECD0
    <00025> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00026> 00010084 S TB_GETBUTTONINFOW iID:5 lptbbi:00FDECD0
    <00027> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00028> 00010084 S TB_GETBUTTONINFOW iID:4 lptbbi:00FDECD0
    <00029> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00030> 00010084 S TB_GETBUTTONINFOW iID:3 lptbbi:00FDECD0
    <00031> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00032> 00010084 S TB_GETBUTTONINFOW iID:2 lptbbi:00FDECD0
    <00033> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00034> 00010084 S TB_GETBUTTONINFOW iID:1 lptbbi:00FDECD0
    <00035> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00036> 00010084 S TB_GETBUTTONINFOW iID:0 lptbbi:00FDECD0
    <00037> 00010084 R TB_GETBUTTONINFOW iIndex:False
    <00038> 00010084 R TB_DELETEBUTTON fSucceeded:True
    <00039> 00010084 S TB_BUTTONCOUNT
    <00040> 00010084 R TB_BUTTONCOUNT nCount:6
    <00041> 00010084 S TB_GETBUTTONINFOW iID:5 lptbbi:00FDF7A4
    <00042> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00043> 00010084 S TB_GETBUTTONINFOW iID:4 lptbbi:00FDF7A4
    <00044> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00045> 00010084 S TB_GETBUTTONINFOW iID:3 lptbbi:00FDF7A4
    <00046> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00047> 00010084 S TB_GETBUTTONINFOW iID:2 lptbbi:00FDF7A4
    <00048> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00049> 00010084 S TB_GETBUTTONINFOW iID:1 lptbbi:00FDF7A4
    <00050> 00010084 R TB_GETBUTTONINFOW iIndex:True
    <00051> 00010084 S TB_GETBUTTONINFOW iID:0 lptbbi:00FDF7A4
    <00052> 00010084 R TB_GETBUTTONINFOW iIndex:False
    <00053> 00010084 S message:0x0463 [用户定义:WM_USER+99] wParam:00000000 lParam:00FDF4E4
    <00054> 00010084 R message:0x0463 [用户定义:WM_USER+99] lResult:00000001
    <00055> 00010084 S TB_GETBUTTONSIZE
    <00056> 00010084 R TB_GETBUTTONSIZE dxButton:18 dyButton:18
    <00057> 00010084 S message:0x0463 [用户定义:WM_USER+99] wParam:00000000 lParam:00FDF4E4
    <00058> 00010084 R message:0x0463 [用户定义:WM_USER+99] lResult:00000001
    <00059> 00010084 S TB_GETBUTTONSIZE
    <00060> 00010084 R TB_GETBUTTONSIZE dxButton:18 dyButton:18
    <00061> 00010084 S message:0x0463 [用户定义:WM_USER+99] wParam:00000000 lParam:00FDF510
    <00062> 00010084 R message:0x0463 [用户定义:WM_USER+99] lResult:00000001
    <00063> 00010084 S TB_GETBUTTONSIZE
    <00064> 00010084 R TB_GETBUTTONSIZE dxButton:18 dyButton:18
    <00065> 00010084 S WM_ERASEBKGND hdc:3C0110F6
    <00066> 00010084 R WM_ERASEBKGND fErased:True
    <00067> 00010084 S message:0x0463 [用户定义:WM_USER+99] wParam:00000000 lParam:00FDE860
    <00068> 00010084 R message:0x0463 [用户定义:WM_USER+99] lResult:00000001
    <00069> 00010084 S TB_GETBUTTONSIZE
    <00070> 00010084 R TB_GETBUTTONSIZE dxButton:18 dyButton:18
    <00071> 00010084 S message:0x0463 [用户定义:WM_USER+99] wParam:00000000 lParam:00FDE860
    <00072> 00010084 R message:0x0463 [用户定义:WM_USER+99] lResult:00000001
    <00073> 00010084 S TB_GETBUTTONSIZE
    <00074> 00010084 R TB_GETBUTTONSIZE dxButton:18 dyButton:18
    <00075> 00010084 S WM_NCPAINT hrgn:00000001
    <00076> 00010084 R WM_NCPAINT
    <00077> 00010084 S WM_ERASEBKGND hdc:3B01159C
    <00078> 00010084 R WM_ERASEBKGND fErased:True
    <00079> 00010084 P WM_PAINT hdc:00000000
    <00080> 00010084 S WM_NCPAINT hrgn:00000001
    <00081> 00010084 R WM_NCPAINT
    <00082> 00010084 S WM_ERASEBKGND hdc:350115C4
    <00083> 00010084 R WM_ERASEBKGND fErased:True
    <00084> 00010084 S message:0x0463 [用户定义:WM_USER+99] wParam:00000000 lParam:00FDF2B0
    <00085> 00010084 R message:0x0463 [用户定义:WM_USER+99] lResult:00000001
    <00086> 00010084 S TB_GETBUTTONSIZE
    <00087> 00010084 R TB_GETBUTTONSIZE dxButton:18 dyButton:18
    <00088> 00010084 S WM_WINDOWPOSCHANGING lpwp:00FDF1FC
    <00089> 00010084 R WM_WINDOWPOSCHANGING
    <00090> 00010084 S WM_NCCALCSIZE fCalcValidRects:True lpncsp:00FDF1D0
    <00091> 00010084 R WM_NCCALCSIZE fuValidRect:0000 lpncsp:00FDF1D0
    <00092> 00010084 S WM_CHILDACTIVATE
    <00093> 00010084 R WM_CHILDACTIVATE
    <00094> 00010084 S WM_NCPAINT hrgn:00000001
    <00095> 00010084 R WM_NCPAINT
    <00096> 00010084 S WM_ERASEBKGND hdc:29011F97
    <00097> 00010084 R WM_ERASEBKGND fErased:True
    <00098> 00010084 S WM_WINDOWPOSCHANGED lpwp:00FDF1FC
    <00099> 00010084 S WM_SIZE fwSizeType:SIZE_RESTORED nWidth:108 nHeight:18
    <00100> 00010084 R WM_SIZE
    <00101> 00010084 R WM_WINDOWPOSCHANGED
    <00102> 00010084 S WM_NCPAINT hrgn:00000001
    <00103> 00010084 R WM_NCPAINT
    <00104> 00010084 S WM_ERASEBKGND hdc:D1011F7E
    <00105> 00010084 R WM_ERASEBKGND fErased:True
    <00106> 00010084 S WM_WINDOWPOSCHANGING lpwp:00FDECBC
    <00107> 00010084 R WM_WINDOWPOSCHANGING
    <00108> 00010084 S WM_CHILDACTIVATE
    <00109> 00010084 R WM_CHILDACTIVATE
    <00110> 00010084 S WM_NCPAINT hrgn:00000001
    <00111> 00010084 R WM_NCPAINT
    <00112> 00010084 S WM_ERASEBKGND hdc:29011F97
    <00113> 00010084 R WM_ERASEBKGND fErased:True
    <00114> 00010084 S WM_WINDOWPOSCHANGING lpwp:00FDEFA0
    <00115> 00010084 R WM_WINDOWPOSCHANGING
    <00116> 00010084 S WM_CHILDACTIVATE
    <00117> 00010084 R WM_CHILDACTIVATE
    <00118> 00010084 S WM_PAINT hdc:00000000
    <00119> 00010084 R WM_PAINT
    <00120> 00010084 S message:0x0463 [用户定义:WM_USER+99] wParam:00000000 lParam:00FDF5B8
    <00121> 00010084 R message:0x0463 [用户定义:WM_USER+99] lResult:00000001
    <00122> 00010084 S TB_GETBUTTONSIZE
    <00123> 00010084 R TB_GETBUTTONSIZE dxButton:18 dyButton:18根据Shell_NotifyIcon来猜测,托盘区就是一个固定的对象,Shell_NotifyIcon只不过是把消息发送到了托盘区.因此,Shell_NotifyIcon的本质有可能就是SendMessage与一堆别的逻辑的组合,要是你自己能想办法响应这些消息并实现其动态效果,就能模拟托盘区了.