当前位置: 首页 > news >正文

广西住房和城乡建设厅网站首页做三个月网站 广告收入

广西住房和城乡建设厅网站首页,做三个月网站 广告收入,wordpress 本地文章,湖南网站营销seo哪家好对于win32每个进程都有自己独立的4GB空间#xff0c;这个每个程序相对于其他程序都是独立的#xff0c;一个程序轻易不能访问其他程序地址#xff0c;一旦访问了轻则跳出出错提示#xff0c;重则蓝屏#xff0c;然而当你离开了当前程序#xff0c;却想要跟踪一些消息这个每个程序相对于其他程序都是独立的一个程序轻易不能访问其他程序地址一旦访问了轻则跳出出错提示重则蓝屏然而当你离开了当前程序却想要跟踪一些消息就困难重重了。幸好windws 给我们提供了钩子(hook)函数。  钩子(hook)一般分为两个等级全局钩子和局部钩子。全局顾名思义可以挂钩其他程序的消息而局部则直挂钩使用钩子函数的进程。当然两种都要使用到dll,需要把dll注入到其他进程中所以使用一定要小心使用不当会影响其他程序的稳定性。下面先介绍一下windows的钩子函数 安装钩子函数HHOOK SetWindowsHookEx( int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId);IdHook: 钩子类型有鼠标、键盘、巨集等等10几种Lpfn: 挂钩的函数用来处理拦截消息的函数。必须是全局函数HMod: 当前进程的句柄dwThreadId: 设置要挂接的线程ID.为NULL则为全局钩子卸载钩子函数BOOL UnhookWindowsHookEx(HHOOK hhk);Hhk 要卸载的钩子句柄还有一个函数LRESULT CallNextHookEx(HHOOK hhk,int nCode,WPARAM wParam LPARAM lParam);用于把拦截的消息继续传递下去不然其他程序可能会得不到相应的消息在一个按钮上点击而程序不能执行是很让人费解的。基本写钩子程序主要是用上面的3个函数。下面就在vc下一步一步写一个鼠标钩子。首先当然是创始一个工程了呵呵废话选择 MFC AppWizard(dll),下一步后选择 MFC Extension Dll,接着创建 mousehook.h 和mousehook.cpp 文件mousehook.h 文件内容如下是不是很短小呢选择MFC Extension(扩展) Dll就可以使用类其他普通和常规dll是不能办到的不过选择了扩展dll这个dll就只能在 MFC 程序中使用在vb、delphi中就不能用了// ____________________________________________________________________________//// 类: CMousehook// 目的: 用来挂钩鼠标// 描述: 该类会随着钩子客户端关闭而自动卸载// ____________________________________________________________________________#ifndef _MOUSEHOOK_ //控制头文件只包含一次#define _MOUSEHOOK_#define WM_MOUSE_HOOK WM_USER110 //传递给钩子dll客户端的消息class AFX_EXT_CLASS CMousehook:public CObject{public: CMousehook(); //析构时自动卸载钩子 ~CMousehook(); //安装钩子,把客户程序窗口句柄发给dll拦截后dll向客户程序发送消息WM_MOUSE_POS BOOL installhook(HWND hclientwnd); //卸载钩子 BOOL uninstallhook(); //鼠标点击次数 int GetMouseClickCount(); //包含鼠标位置的数组。为什么使用POINT 结构传递坐标客户端赋值不能编译成功?? int* GetClickPosition();};#endif下面是相应的实现文件// // INCLUDE FILES// #include stdafx.h#include #include mousehook.h// // DEFINES// #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] __FILE__;#endif//公共数据用于不通进程的数据共享。不用进程都装载mousehook.dll但都放在自己的范围所以mousehook类成员是不能共享的必须创建全局数据段。在不同程序之间共享这些数据//还需要在相应的 .def 文件中加入SECTIONSmymousedata READ WRITE SHARED//把该全局数据段设置为读写共享//全局共享数据段声明#pragma data_seg(mymousedata)static HINSTANCE hinstNULL; //注入钩子的程序句柄static HHOOK g_hookNULL; //钩子句柄static HWND g_hwndNULL; //需要处理钩子消息的客户端句柄static int mouseclickcount0; //鼠标点击次数static int position[2]{0,0};//鼠标的位置信息#pragma data_seg()static AFX_EXTENSION_MODULE MousehookDLL { NULL, NULL };extern C int APIENTRYDllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved){ UNREFERENCED_PARAMETER(lpReserved); if (dwReason DLL_PROCESS_ATTACH) { TRACE0(MOUSEHOOK.DLL Initializing!/n); if (!AfxInitExtensionModule(MousehookDLL, hInstance)) return 0; new CDynLinkLibrary(MousehookDLL); } else if (dwReason DLL_PROCESS_DETACH) { TRACE0(MOUSEHOOK.DLL Terminating!/n); AfxTermExtensionModule(MousehookDLL); }  //传给SetWindowsHookEx()函数的当前程序句柄; hinsthInstance; return 1; // ok} //传递给钩子安装函数参数 lpfn 一个要注入到各个进程的全局函数。必须声明为 extern “C”extern C __declspec(dllexport) LRESULT WINAPI mouseproc(int nCode,WPARAM wParam,LPARAM lParam){ //检测鼠标消息鼠标钩子消息存放在 wParam 参数中lParam 指向MOUSEHOOKSTRUCT //的指针存放鼠标位置,当前窗口句柄鼠标消息等等。 if(wParamWM_MOUSEMOVE||wParamWM_LBUTTONDOWN||wParamWM_RBUTTONDOWN) { LPMOUSEHOOKSTRUCT mousedetials(LPMOUSEHOOKSTRUCT) lParam; //由于c函数不支持结构赋值使用MOUSEHOOKSTRUCT 变量传递坐标不能成功 position[0]mousedetials-pt.x; position[1]mousedetials-pt.y; if(wParamWM_LBUTTONDOWN) { mouseclickcount; }//给钩子客户端发送消息使客户端刷新数据使用PostMessage,不要使用//SendMessage, SendMessage要等到函数返回才继续执行。 PostMessage(g_hwnd,WM_MOUSE_HOOK,0,0);  } //把钩子消息传递下去。 return CallNextHookEx(g_hook,nCode,wParam,lParam);}CMousehook::CMousehook(){}CMousehook::~CMousehook(){ uninstallhook();}BOOL CMousehook::installhook(HWND hclientwnd){ BOOL bRESULTFALSE; //判断是否安装了一次钩子 if(g_hook!NULL) { bRESULTtrue; } else { //安装钩子 g_hookSetWindowsHookEx(WH_MOUSE,(HOOKPROC)mouseproc,hinst,0); if(g_hook!NULL) { bRESULTTRUE; } else { //安装钩子失败可能吗 bRESULTFALSE; MessageBox(NULL,挂钩失败,Failure,MB_OK); } } //钩子的客户端窗口句柄 g_hwndhclientwnd; return bRESULT;}BOOL CMousehook::uninstallhook(){ BOOL bResultfalse; if (g_hook!NULL) { // 卸载钩子 bResultUnhookWindowsHookEx(g_hook); if (bResult) { g_hookNULL; } } else { bResulttrue; } return bResult;}int CMousehook::GetMouseClickCount(){ //返回鼠标点击次数 return mouseclickcount;}int* CMousehook::GetClickPosition(){ //返回鼠标坐标 return position;}现在完成的是鼠标钩子的动态链接库经过编译后需要经应用程序的调用才能实现对当前系统下各线程间鼠标消息的拦截处理。这部分同普通动态链接库的使用没有任何区别在将其使用LoadLibrary 加载到进程后首先调用动态链接库的Cmousehook: :installhook函数安装好钩子此时即可对系统下的鼠标消息实施拦截处理。经上述编程在安装好鼠标钩子后鼠标在移动到系统任意窗口上时马上就会通过对鼠标消息的拦截处理而获取到当前鼠标位置。系统钩子具有相当强大的功能通过这种技术可以对几乎所有的Windows系统消息和事件进行拦截处理。这样向QQ自动隐藏或者可停靠功能都很容易实现。以及一些简单的木马当判断鼠标当前窗口是密码窗口时只需要向该窗口发送WM_GETTEXT即可轻松得到密码。这种技术广泛应用于各种自动监控系统对进程外消息的监控处理。本文只对鼠标钩子的一些基本原理和一般的使用方法做了简要的探讨感兴趣的读者完全可以在本文所述代码基础之上用类似的方法实现对 诸如键盘钩子、外壳钩子等其他类型钩子的安装与使用。本文所述代码在Windows 2000下由Microsoft Visual C 6.0编译通过。
http://www.dnsts.com.cn/news/165764.html

相关文章:

  • 上海市 建设执业资格注册中心网站网页设计制作教程题库
  • 陕西省交通集团建设网站免费建站
  • 公司网站开发软件做网批有专门的网站吗?
  • 上海市建设工程咨询行业协会seo基础培训教程
  • 企业网站开发标准网站seo链接购买
  • 江宁网站建设报价不花钱怎么做网站运营
  • 怎么做能上谷歌网站什么是企业
  • 网站仿制教程创新创业项目计划书
  • 九江 网站建设网站设计由哪个部门做
  • 蓝色风格企业网站模板游戏在线玩免费免登录
  • 海外手表网站学做蛋糕的网站
  • 商城网站做推广方案可以为自己的小说建设网站
  • 免费看电视剧网站2020可以做彩字的网站
  • 哪些网站可以做详情页宠物之家网站开发
  • 怎么建投票网站建设网站的发布与推广
  • 深圳网站建设培训哪家好wordpress微信公众号关注登陆
  • 做图软件下载官方网站学ui学费大概多少钱
  • 网站开发流行cnc是什么意思
  • 江油网站制作怎么做网页中不显示项目符号
  • 网站开发技术概述广州网站建设全包
  • 昆山制造网站的地方空间网站购买
  • 宁波建站价格wordpress如何更新临时域名
  • 织梦网站导航如何删除微信h5网站模板下载
  • 深圳外贸建站及推广成都网站建设网站制作
  • 建设银行手机短信网站怎么开通公司部门祝福语
  • 郑州网站开发yipinpai商业网站建设设计公司
  • 旅游网站推荐排行榜网站建设需要考哪些证
  • 南京网站建设服务注册公司的七个步骤
  • 男女做羞羞的事情网站微信平台开发教程
  • 建设工程 法律 网站应用关键词优化