一个清除自定义通知的小程序【原创.附源代码】

来源:互联网 发布:json的数据交换接口 编辑:程序博客网 时间:2024/05/01 17:09

           一些程序或者是网络连接,在使用的时候会出现在右下角的system tray区域显示一个小图标,例如QQ、杀毒软件、宽带连接等。就算是程序退出或者是连接断开,仍然可以在“自定义通知”看见历史记录。删除这些记录需要修改注册表,并且结束explorer.exe进程,才能起效果。这几天利用业余的时间写了个小程序,可以帮助清除“自定义通知”里面的历史记录。这个程序在mingw+codeblocks(Night build)下面编译通过,不想编译源代码,怕麻烦又信任我的朋友可以通过qq(18753821)向我索取。这里提供源代码,共四个源代码文件:
第一个main.cpp:
//#define _DEBUG_

#include <windows.h>
#include <stdio.h>
#include "search_proc.h"
#include "debug.h"

#define SUB_KEY  "Software//Microsoft//Windows//CurrentVersion//Explorer//TrayNotify"  //将要被清理的子键值
#define ICONSTREAMS "IconStreams"                   //清理的键值
#define PASTICONSSTREAM "PastIconsStream"      //清理的键值

int WINAPI WinMain (HINSTANCE hThisInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszArgument,
                     int nCmdShow)
{
    //显示作者:
    if(!strcmp("-v",lpszArgument)){
        MessageBox(NULL,"作者:天涯剑客(QQ:18753821)","自定义通知清理V0.11",MB_OK);
        return 0;
    }

    DWORD procId=SearchProcess("EXPLORER.EXE");  //查找并得到explorer.exe进程ID
    DEBUG(printf("Terminate Process ID=%d",procId))

    HANDLE hExplorer=OpenProcess(PROCESS_TERMINATE,FALSE,procId); //取得explorer进程句柄

    //结束explorer.exe进程

    if(!TerminateProcess(hExplorer,0)){
            INFO("进程结束失败!")
    }

    LONG LStatue;

    HKEY hkOperation=HKEY_CURRENT_USER;     //定义主键

    PHKEY phkOperation=&hkOperation;
    //打开键:
    LStatue=RegOpenKeyEx(HKEY_CURRENT_USER,
                                        SUB_KEY,0,KEY_ALL_ACCESS,phkOperation);

    if(LStatue!=ERROR_SUCCESS){
       INFO("注册表键打开失败!")
    }
    //删除键值IconStreams:
    LStatue=RegDeleteValue(hkOperation,ICONSTREAMS);
    if(LStatue!=ERROR_SUCCESS){
        INFO("注册表键值IconStreams删除失败!")
    }
    //删除键值PastIconsStream:
    LStatue=RegDeleteValue(hkOperation,PASTICONSSTREAM);
    if(LStatue!=ERROR_SUCCESS){
        INFO("注册表键值PastIconsStreams删除失败!")
    }



    return 0;
}

第二个search_proc.h:
//#define _DEBUG_

#ifndef SEARCH_PROC_H_INCLUDED
#define SEARCH_PROC_H_INCLUDED
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include "debug.h"

//常量定义部分:
#define NOT_FOUND 0
#define SNAP_GET_FAILED 0
#define BALANCE ('a'-'A')

//进程查找函数:
DWORD SearchProcess(char*);

#endif // SEARCH_PROC_H_INCLUDED

第三个search_proc.cpp

#include "search_proc.h"


DWORD SearchProcess(char* szFilename)
{
    //定义存储快照信息所用的两个结构:
    PROCESSENTRY32 processEntry={0};
    MODULEENTRY32 moduleEntry={0};

    HANDLE hProcessSnap=
        CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  //取得系统进程快照

    if(hProcessSnap==INVALID_HANDLE_VALUE)
            return SNAP_GET_FAILED;

    processEntry.dwSize=sizeof(PROCESSENTRY32);
    moduleEntry.dwSize=sizeof(MODULEENTRY32);

    BOOL bFlag=Process32First(hProcessSnap,&processEntry);//取得第一个快照结构

    while(bFlag)
    {
        //取得系统进程模块快照:
        HANDLE hModuleSnap=
                CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,
                                                        processEntry.th32ProcessID);
            DEBUG(printf("ProcessID:%d=======%s/n",
                        processEntry.th32ProcessID,processEntry.szExeFile))

        if(!strcasecmp(szFilename,processEntry.szExeFile)){//如果找到指定进程则返回

            DEBUG(printf("ProcessID:%d=======%s/n",
                        processEntry.th32ProcessID,processEntry.szExeFile))
            CloseHandle(hProcessSnap);
            return processEntry.th32ProcessID;//返回进程ID号
        }
        bFlag=Process32Next(hProcessSnap,&processEntry);//取得下一个结构
    }
    CloseHandle(hProcessSnap);
    return NOT_FOUND;

}

第四个debug.h(主要是调试程序时用到的宏):
#ifndef DEBUG_H_INCLUDED
#define DEBUG_H_INCLUDED
#ifdef _DEBUG_
    #define INFO(STR)  MessageBox(NULL,STR,"程序调试",MB_OK);
    #define DEBUG(CODE) {CODE;}
#else
    #define INFO(STR)
    #define DEBUG(CODE)
#endif //_DEBUG_
#endif // DEBUG_H_INCLUDED

    以上是这个程序的源代码,希望有高手能够帮我指点一下,特别是容错方面的,这个程序的容错性特别的差,发行版几乎没有检查和提示,没有窗口出现,主要是偶比较菜鸟。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 头发太细了想让头发变粗点怎么办 我的头发又少又很油该怎么办 头发油掉发头顶头发稀疏怎么办 我的头发天生就少又细怎么办 头发越来越少怎么办 用什么好呢 头发油掉头发怎么办吃什么药好 生完孩子三个月掉头发很厉害怎么办 电夹板夹头发现在掉头发怎么办 刚剪完的头发前面短后面长怎么办 头发太多太厚怎么办_百度经验 米诺地尔搽剂喷在头皮上痛怎么办 米诺地尔擦了头皮痒怎么办 头发又细又少一天不洗就油怎么办 头又尖头发又细又少不知怎么办 蘑菇头发型留长尴尬期怎么办 月经期间洗了下头量很少了怎么办 宝宝喝了有沐浴露的洗澡水怎么办 4个月宝宝头发长的慢怎么办 宝宝不小心吃了自己拉的屎怎么办 手机不小心弄成耳机模式怎么办 苹果手机不小心按了丢失模式怎么办 苹果手机不小心调成耳机模式怎么办 不小心把图书馆的书弄坏了怎么办 不小心把图书馆书拿出来了怎么办 八个月宝宝吃母乳缺铁怎么办 大头笔写的字褪色了怎么办 小画板用记号笔画了擦不下来怎么办 新换的大灯和原大灯有色差怎么办? 微信信息写好没有发送两字怎么办 3d模型导进去 材质丢失怎么办 3d模型导入材质没了怎么办 淘宝上的电视尺寸与实际不符怎么办 医师面试题号忘了写怎么办 淘宝买东西东西被别人拿走了怎么办 9个月宝宝上肢支撑不好怎么办 宝宝快十一个月了留口水怎么办 两岁宝宝不会自己登着大小便怎么办 小新家的房子被炸了房贷怎么办 怀孕8个月感冒鼻窦炎头疼怎么办 买的全身镜下面的框子坏了怎么办 单位上司姐姐每天要接我上班怎么办