苦苦寻找的隐藏托盘图标的方法,今天终于搞定,献给大家


#include <atlbase.h>
#include <atlconv.h>
#include <CommCtrl.h> void ShowTrayIcon(char szIcon[],BOOL show)
{
    HWND hWnd,hWndPaper;
    unsigned long lngPID;
    long ret,lngButtons;
    HANDLE hProcess;
    LPVOID lngAddress;
    long lngTextAdr,lngHwndAdr,lngHwnd,lngButtonID;
    char strBuff[1024]={0};
    char* str = NULL;
    char *pp = NULL;     hWnd = FindWindow("Shell_TrayWnd", NULL);
    hWnd = FindWindowEx(hWnd, 0, "TrayNotifyWnd", NULL);
    hWndPaper = FindWindowEx(hWnd, 0, "SysPager", NULL);
    if(!hWndPaper)
        hWnd = FindWindowEx(hWnd, 0, "ToolbarWindow32", NULL);
    else
        hWnd = FindWindowEx(hWndPaper, 0, "ToolbarWindow32", NULL);
    ret = GetWindowThreadProcessId(hWnd, &lngPID);
    hProcess = OpenProcess(PROCESS_ALL_ACCESS
                            |PROCESS_VM_OPERATION
                            |PROCESS_VM_READ
                            |PROCESS_VM_WRITE,
                            0,
                            lngPID);
    lngAddress = VirtualAllocEx(hProcess,0, 0x4096, MEM_COMMIT, PAGE_READWRITE);
    lngButtons = SendMessage(hWnd, TB_BUTTONCOUNT, 0, 0);     for(int i=0 ;i< lngButtons - 1;i++)
    {
        ret = SendMessage(hWnd,TB_GETBUTTON,i,long(lngAddress));
        ret = ReadProcessMemory(hProcess, LPVOID(long(lngAddress) + 16),&lngTextAdr,4,0);
        if(lngTextAdr != -1)
        {
            ret = ReadProcessMemory(hProcess, LPVOID(lngTextAdr),strBuff,1024,0);
            ret = ReadProcessMemory(hProcess, LPVOID(long(lngAddress) + 12),&lngHwndAdr,4,0);
            ret = ReadProcessMemory(hProcess, LPVOID(lngHwndAdr),&lngHwnd, 4,0);
            ret = ReadProcessMemory(hProcess, LPVOID(long(lngAddress) + 4),&lngButtonID,4,0);
            USES_CONVERSION;
            str = OLE2T((LPOLESTR)(strBuff));
            pp=strstr(str,szIcon);
            if(pp != NULL)
            {
                if(show)
                {
                    SendMessage(hWnd,TB_HIDEBUTTON,lngButtonID,0);
                }
                else
                { 
                    SendMessage(hWnd,TB_HIDEBUTTON,lngButtonID,1);
                }
            }
        }
    }
    VirtualFreeEx( hProcess,  lngAddress,  0X4096, MEM_RELEASE);
    CloseHandle(hProcess);
}

调用方法:

char szIcon[] :要隐藏的托盘图标;BOOL show:false 为隐藏图标,true为显示图标。例如,隐藏金山词霸的托盘图标:

ShowTrayIcon("金山词霸",false);

http://www.cnblogs.com/anjou/archive/2008/12/20/1359085.html

VC 隐藏托盘图标的更多相关文章

  1. Win7以上 32/64位系统隐藏托盘图标

    前两天有朋友找我,让帮忙写个小工具,隐藏windows的托盘图标,想想最近在家也不想做太复杂的事,也好几年没写过windows上的小工具了,就答应了.想来挺简单的事,没想到还是有点小插曲的.特地来博客 ...

  2. swift - 指定VC隐藏导航栏 - 禁用tabbar的根控制器手势,防止两个tabbar跳转 手势冲突

    1. viewdidload 设置代理 self.navigationController?.delegate = self 2.代理里面指定VC 隐藏 //MARK: - 导航栏delegate e ...

  3. 【转】VC 隐藏模块、MFC 改变窗口类名

    [转]VC 隐藏模块 void HideDll() { HMODULE hMod = ::GetModuleHandle("MyHook.dll"); PLIST_ENTRY He ...

  4. 求助(VC++) 隐藏Console窗体无效

    [逝去的100~~ 2014/10/07 20: 20] 程序想要实现控制台窗体的隐藏,可是窗体每次执行总会弹出来.为什么呢? 代码例如以下: // Mini.cpp : 定义控制台应用程序的入口点. ...

  5. C# 托盘图标闪烁

    在用户正在登录QQ或者使用Firemail邮件系统自动收取邮件的时候,托盘图标会闪动提示用户正在运行的任务.闪动图标可以使用定时切换托盘图标的方式实现,托盘图标可以从ImageList控件中获取.在I ...

  6. Inno Setup 系统托盘图标插件 TrayIconCtrl V1.5

    原文 http://restools.hanzify.org/article.asp?id=93 V1.5 修正在某些 Windows 平台上(例如 Windows XP SP3)不能正常运行的问题. ...

  7. ios9API基础知识总结(二)

    UIAlertView(警告框) UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"标题" message:@&qu ...

  8. 智能跳转---TC资源管理器

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;作者:天甜:QQ: ;一花一世界,一叶一枯荣,心无挂碍,无挂碍故 ...

  9. 影子卫士汉化语言包 res.ini

    [translate];authorinfo=Simplified Chinese Translation 简体翻译 by: Clarence [common]0=Shadow Defender 10 ...

随机推荐

  1. Qt入门(3)——信号和槽

    信号和槽用于对象间的通讯.信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分.在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件.更一般地,我们希望 ...

  2. WIN7笔记本显示连接不可用

    如图所示,找不到任何无线网络 解决方法: 不小心把无线关掉而已,笔记本键盘上F5~F12找看看有没有无线标志,有的话要先按下 Fn键不放,再按下那个有无线标志的Fn键.

  3. Codeforces 235E Number Challenge

    http://codeforces.com/contest/235/problem/E 远距离orz......rng_58 证明可以见这里(可能要FQ才能看到) 还是copy一下证明吧: 记 $$f ...

  4. HDOJ 1248

    完全背包. 模版. 物品的价值等价于体积. #include <stdio.h> #include <string.h> using namespace std; int ma ...

  5. javaweb笔记2之HTTP协议

    1 什么是http协议 是浏览器客户端  和  服务器端 数据传输的 格式规范: 2 查看http协议 (1)用火狐的firebug插件查看      (2)使用谷歌的Ghome查看(审查元素-> ...

  6. jquery1.7.2的源码分析(六)基本功能

    jQuery.fn.extend({ attr: function( name, value ) { return jQuery.access( this, jQuery.attr, name, va ...

  7. 二、MLlib统计指标之关联/抽样/汇总

    汇总统计[Summary statistics]: Summary statistics提供了基于列的统计信息,包括6个统计量:均值.方差.非零统计量个数.总数.最小值.最大值. import org ...

  8. 使用memcached加速web应用实例

    在实际应用中,一般会把数据库查询的结果保存到memcached中,下次訪问数据库时直接从memcached中获取.而不再进行数据库操作,这样非常大的程度上减轻了数据库的负担. [演示样例]: < ...

  9. python实现websocket服务器,可以在web实时显示远程服务器日志

    一.开始的话 使用python简单的实现websocket服务器,可以在浏览器上实时显示远程服务器的日志信息. 之前做了一个web版的发布系统,但没实现在线看日志,每次发布版本后,都需要登录到服务器上 ...

  10. js千分位转换

    var money = 1234567.55; var sMoney = money.toLocaleString(); console.info(sMoney); console.info(pars ...