dll 子类化 记事本 相应自己的功能
2016-05-27 00:17
417 查看
这样就可以diy 别人软件 只粘贴部分代码
只是dll 没有劫持 需要手动注入
对记事本菜单进行修改
子类化的地方 和回调函数
回调函数
LRESULT NewWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CTLCOLOREDIT:
{
SetTextColor((HDC)wParam,crText); //设置文字色
SetBkColor((HDC)wParam,clBkgnd); //设置背景色
}
代码很粗糙 需要更练习 ,需要源码联系我 1028962069@qq.com
只是dll 没有劫持 需要手动注入
对记事本菜单进行修改
void menushow() { hWnd = FindWindow(NULL, "无标题 - 记事本"); hedit = FindWindowEx(hWnd,NULL,"Edit", ""); HMENU hMenu = GetMenu(hWnd); RemoveMenu(hMenu, 0, MF_BYPOSITION); RemoveMenu(hMenu, 0, MF_BYPOSITION); RemoveMenu(hMenu, 0, MF_BYPOSITION); RemoveMenu(hMenu, 0, MF_BYPOSITION); RemoveMenu(hMenu, 0, MF_BYPOSITION); HMENU hPopupMenu = CreatePopupMenu(); AppendMenu(hMenu, MF_POPUP, (int)hPopupMenu, "VIP隐藏工具"); AppendMenu(hPopupMenu, MF_STRING, 100, "置顶"); AppendMenu(hPopupMenu, MF_STRING, 101, "透明"); AppendMenu(hPopupMenu, MF_STRING, 102, "设置字体"); AppendMenu(hPopupMenu, MF_STRING, 103, "设置颜色"); AppendMenu(hPopupMenu, MF_STRING, 104, "获取进程"); ShowWindow(hWnd,SW_SHOW); UpdateWindow(hWnd); }
子类化的地方 和回调函数
extern "C" _declspec (dllexport) void fun() { OldWindwProc=GetWindowLong(hWnd, GWL_WNDPROC); SetWindowLong(hWnd,GWL_WNDPROC,(long)NewWndProc); }
回调函数
LRESULT NewWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_COMMAND: { WORD wID = LOWORD(wParam); if (wID==100) { //窗口置顶 SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_DRAWFRAME | SWP_NOSIZE); } if (wID==101) { typedef BOOL (WINAPI *PFN_SETLAYEREDWINDOWATTRIBUTES)(HWND hWnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags); PFN_SETLAYEREDWINDOWATTRIBUTES SetLayeredWindowAttributes = NULL; HMODULE m_hUser32 = LoadLibrary("User32.dll"); SetLayeredWindowAttributes = (PFN_SETLAYEREDWINDOWATTRIBUTES)GetProcAddress(m_hUser32, "SetLayeredWindowAttributes"); SetWindowLong( hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE)| WS_EX_LAYERED); SetLayeredWindowAttributes( hWnd, 0, 125, 3); } //设置字体 if (wID==102) { GetObject(GetStockObject(SYSTEM_FONT), sizeof(lf), &lf); chfont.lStructSize = sizeof(CHOOSEFONT); chfont.hwndOwner = hWnd; chfont.hDC = NULL; chfont.lpLogFont = &lf; chfont.iPointSize = 0; chfont.Flags = CF_INITTOLOGFONTSTRUCT | CF_EFFECTS | CF_SCREENFONTS ; chfont.rgbColors = 0; chfont.lCustData = 0; chfont.lpfnHook = NULL; chfont.lpTemplateName = NULL; chfont.hInstance = NULL; chfont.lpszStyle = NULL; chfont.nFontType = 0; chfont.nSizeMin = 0; chfont.nSizeMax = 0; ChooseFont(&chfont); //创建字体 hFont = CreateFontIndirect(&lf); crText=chfont.rgbColors; SendMessage(hedit,WM_SETFONT,(WPARAM)hFont,0); InvalidateRect(hedit,NULL,TRUE); } if (wID==103) { cc.lStructSize =sizeof(cc); cc.hwndOwner =hedit; cc.hInstance =0; cc.rgbResult =0; cc.lpCustColors =fontcolor; cc.Flags =CC_RGBINIT; cc.lCustData =0; cc.lpfnHook =0; cc.lpTemplateName =0; if(ChooseColor(&cc)==TRUE) { DeleteObject(hb); //删除以前创建的,以免内存泄露 clBkgnd=cc.rgbResult; //保存背景色z InvalidateRect(hedit,NULL,TRUE); //强制更新 } } //获取进程 if (wID==104) { char buf[MAXBYTE] ={0}; char pidbuf[MAXBYTE*10]={0}; HANDLE hSnapshot =CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 Process = {0}; Process.dwSize = sizeof(PROCESSENTRY32); BOOL bRet = Process32First(hSnapshot, &Process); do { wsprintf(buf,"%s\r\n",Process.szExeFile); strcat(pidbuf,buf); } while (bRet =Process32Next(hSnapshot, &Process)); SetWindowText(hedit,pidbuf); } break; } break;
case WM_CTLCOLOREDIT:
{
SetTextColor((HDC)wParam,crText); //设置文字色
SetBkColor((HDC)wParam,clBkgnd); //设置背景色
return (LRESULT)hb; } break; case WM_CLOSE: { MessageBox(NULL, "确认是否退出本程序", "提示",MB_ICONINFORMATION); } break; } return (CallWindowProc((WNDPROC)OldWindwProc,hWnd,message,wParam,lParam ));//这里一定要注意
}
代码很粗糙 需要更练习 ,需要源码联系我 1028962069@qq.com
相关文章推荐
- 用NSMutableAttributedString快速设置UIbutton Title/lable的文字:字体,大小,颜色
- 拦截器getmodel方法什么时候被调用(没搞懂有什么鸟用,自己搭的项目中用到了这个)
- Convention插件的使用(会涉及content目录,jsp必须放入这个下面才能映射成功基于注解的配置)
- Android 动画目录-概要
- 最新版SDWebImage的使用
- Spring组件扫描<context:component-scan/>使用详解
- css 加号 选择器
- Eclipse从数据库逆向生成Hibernate带注解的实体类
- HibernateTool的安装和使用(Eclipse中)
- 写个接口的实现类,在方法的前面加了@Override居然报错
- SVM理解
- 使用NSMutableAttributedString为UIButton/UILabel 快速设置文字的大小,字体,颜色
- Hibernate需要的10个jar包
- Leetcode 78. Subsets 子集 解题报告
- codeforces #Round354-div2-C
- javascript的变量声明和函数声明提升
- 操作数据表中的记录
- android_EventBus入门学习笔记
- IOS学习之蓝牙4.0
- Android优化建议