子类化隐藏Alerter服务的例子
来源:互联网 发布:python % 编辑:程序博客网 时间:2024/05/16 18:03
子类化隐藏Alerter服务的例子
把dll注入mmc.exe,子类化其显示服务列表的listview32控件,隐藏Alerter服务,以下为dll全代码。
----------------------------------------------------------------------------------
#include "stdafx.h"
#define MAGIC_NUMBER (0x100)
WNDPROC lpfnSupperClassProc=NULL;
__forceinline void HideItem(HWND hListCtrl,DWORD dwItemcount)
{
LVITEM li={0};
char text[50]={0};
li.pszText=text;
li.cchTextMax=50;
for(DWORD i=0;i<dwItemcount;i++)
{
// 取得每一条记录名称
CallWindowProc(lpfnSupperClassProc,hListCtrl,LVM_GETITEMTEXT,i,(LPARAM)&li);
// 如果是指定的记录,就删除
if(StrStrI(li.pszText,_T("Alerter"))!=NULL)
CallWindowProc(lpfnSupperClassProc,hListCtrl,LVM_DELETEITEM,i,0);
}
}
LRESULT CALLBACK ListFilterProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
DWORD dwItemcount=0;
if(WM_PAINT==uMsg)
{
// 取得ListView控件中记录条数
dwItemcount=CallWindowProc(lpfnSupperClassProc,hwnd,LVM_GETITEMCOUNT,0,0);
if(dwItemcount<MAGIC_NUMBER)
{
HideItem(hwnd,dwItemcount);
}
}
return CallWindowProc(lpfnSupperClassProc,hwnd,uMsg,wParam,lParam);
}
__forceinline BOOL InstallListFilter()
{
OutputDebugString(_T("InstallFilter/n"));
BOOL bRet=FALSE;
HWND hWnd=NULL;
// 初始化自定义控制类
INITCOMMONCONTROLSEX cls={sizeof(INITCOMMONCONTROLSEX),ICC_WIN95_CLASSES};
bRet=InitCommonControlsEx(&cls);
if(bRet)
{
hWnd=CreateWindow(_T("SysListView32"),_T(""),WS_CAPTION|LVS_REPORT,0,0,0,0,NULL,NULL,NULL,NULL);
lpfnSupperClassProc=(WNDPROC)GetClassLong(hWnd,GCL_WNDPROC);
SetClassLong(hWnd,GCL_WNDPROC,(LONG)ListFilterProc);
DestroyWindow(hWnd);
}
return bRet;
}
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call, LPVOID lpReserved)
{
if(DLL_PROCESS_ATTACH==ul_reason_for_call)
// DLL被加载时挂上过滤
InstallListFilter();
return TRUE;
}
把dll注入mmc.exe,子类化其显示服务列表的listview32控件,隐藏Alerter服务,以下为dll全代码。
----------------------------------------------------------------------------------
#include "stdafx.h"
#define MAGIC_NUMBER (0x100)
WNDPROC lpfnSupperClassProc=NULL;
__forceinline void HideItem(HWND hListCtrl,DWORD dwItemcount)
{
LVITEM li={0};
char text[50]={0};
li.pszText=text;
li.cchTextMax=50;
for(DWORD i=0;i<dwItemcount;i++)
{
// 取得每一条记录名称
CallWindowProc(lpfnSupperClassProc,hListCtrl,LVM_GETITEMTEXT,i,(LPARAM)&li);
// 如果是指定的记录,就删除
if(StrStrI(li.pszText,_T("Alerter"))!=NULL)
CallWindowProc(lpfnSupperClassProc,hListCtrl,LVM_DELETEITEM,i,0);
}
}
LRESULT CALLBACK ListFilterProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
DWORD dwItemcount=0;
if(WM_PAINT==uMsg)
{
// 取得ListView控件中记录条数
dwItemcount=CallWindowProc(lpfnSupperClassProc,hwnd,LVM_GETITEMCOUNT,0,0);
if(dwItemcount<MAGIC_NUMBER)
{
HideItem(hwnd,dwItemcount);
}
}
return CallWindowProc(lpfnSupperClassProc,hwnd,uMsg,wParam,lParam);
}
__forceinline BOOL InstallListFilter()
{
OutputDebugString(_T("InstallFilter/n"));
BOOL bRet=FALSE;
HWND hWnd=NULL;
// 初始化自定义控制类
INITCOMMONCONTROLSEX cls={sizeof(INITCOMMONCONTROLSEX),ICC_WIN95_CLASSES};
bRet=InitCommonControlsEx(&cls);
if(bRet)
{
hWnd=CreateWindow(_T("SysListView32"),_T(""),WS_CAPTION|LVS_REPORT,0,0,0,0,NULL,NULL,NULL,NULL);
lpfnSupperClassProc=(WNDPROC)GetClassLong(hWnd,GCL_WNDPROC);
SetClassLong(hWnd,GCL_WNDPROC,(LONG)ListFilterProc);
DestroyWindow(hWnd);
}
return bRet;
}
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call, LPVOID lpReserved)
{
if(DLL_PROCESS_ATTACH==ul_reason_for_call)
// DLL被加载时挂上过滤
InstallListFilter();
return TRUE;
}
- 子类化隐藏Alerter服务的例子
- 子类化的例子
- Alerter华丽的消息推送栏
- vc控件子类的例子
- 子类隐藏方法的继承关系
- UIView子类初始化的隐藏知识
- 利用窗口子类化隐藏系统图标
- 利用窗口子类化隐藏系统图标
- 类和子类的一些例子
- C++中子类与基类的函数隐藏规则
- 父类与子类间的隐藏与重写
- java 子类父类同名变量的隐藏
- Java子类与父类方法的隐藏和覆盖
- c#中子类使用被隐藏的父类方法
- 窗体的子类化
- 子类化的概念
- 不同进程子类话窗口失败的例子
- mootools中父类子类Extends,extend,Implements,implement的一个例子
- 真他爷爷的热
- URI和URL的区别
- 老外的售前过程怎么做
- m选n算法
- 上海高考惊现0分作文 只因描写同性恋题材
- 子类化隐藏Alerter服务的例子
- 程序修改Windows环境变量生效
- 封包和拆包
- 我,me,我的Blog,my Blog.
- Spring中的Rod Johnson 与“轮子理论”
- 清华研制成功脑机接口系统 可用思维控制
- 我终于用到了委托
- 决定何时使用 DataGrid、DataList 或(Repeater(ASP.NET 技术文章)Z
- 一个很简单的获得sqlserver建表sql(create table)的方法