子类化隐藏Alerter服务的例子

转载 2006年06月15日 18:52:00
子类化隐藏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;
}

相关文章推荐

combox内编辑框和列表框的子类化

  • 2011年04月24日 17:04
  • 20KB
  • 下载

子类化重绘仿QQ2009渐变按钮

  • 2009年09月09日 10:43
  • 109KB
  • 下载

CStatic子类化解决背景透明,文本重叠,刷新闪烁问题

由于是很少使用VS2008的MFC,遇到了很多麻烦,其实都是很初级的;但是我还是想做点记录,以示对自己工作的鼓励,同时也是留个纪念,因为随着微软政策的变化,以后MFC的程序将不会是趋势了,而我也有意从...
  • tom06
  • tom06
  • 2014年08月12日 19:16
  • 2534

win32 汇编 控件子类化(源代码)

  • 2008年01月10日 11:24
  • 4KB
  • 下载

VB 子类化重绘ListBox

  • 2014年12月30日 14:06
  • 26KB
  • 下载

什么是VB进行子类化及简单介绍

目录 何谓子类化(subclassing)Visual Basic 6子类化的实现Visual Basic .NET子类化的实现小结 1. 何谓子类化(subclassing)   ...

vfp 子类化 textbox

  • 2017年08月10日 16:19
  • 8KB
  • 下载

GetWindowLong函数(最好的解释资料,绝对值得一看,此函数在子类化技巧时候经常用到)

今天在看一个代码里头写了GetWindowLong (hwnd, 0),我当时就有点费解,靠,上网 搜索函数原型说明,死活找不到第2个参数为0是指什么,MD,很恼火,最近终于在一个 国外网站找到,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:子类化隐藏Alerter服务的例子
举报原因:
原因补充:

(最多只允许输入30个字)