共 11 篇文章 |
|
也有其他方法,这里不多叙述2.在DLL文件中 设置钩子.这里需要调用线程ID,threadId,我们会在下面调用DLL的调用端中写入hhookGetMsg=::SetWindowsHookEx(WH_GETMESSAGE,GetMessageHookProc,::GetModuleHandle(TEXT("dll.dll")),threadId);//参数1:钩子类型//参数2:钩子处理函数//参数3:钩子所在的模块//参数4:钩子要拦截的线程ID,... 阅3846 转14 评0 公众公开 13-12-14 17:52 |
C++钩子程序浅析。int idHook :int型的参数,一般我们在传递参数时用定义好的宏进行传递,该参数表示安装钩子的类型,比如要安装一个鼠标的钩子那么参数可以写WH_MOUSE或者 WH_MOUSE_LL,他们的区别是前者是当调用GetMessage 或者 PeekMessage 函数所触发的鼠标消息,后者是当有鼠标消息事件产生即触发。WPARAM wParam 、LPARAM lParam :分别... 阅1934 转7 评0 公众公开 13-12-12 16:36 |
VC++中键盘钩子和鼠标钩子。上边这个键盘钩子只能截获普通键,像WIN键、CTRL+ESC什么的是截获不了的,如果要截获这些比较牛的功能键及组合键,那就要用低级键盘钩子了。这些方法我自己在多台机子上测试时有时候会出些问题,我这个DEMO运行后是托盘图标形式的,钩子是可以按情况安装和卸载的,在有的机子上安装卸载一次后,托盘图标右键菜单点击... 阅236 转1 评0 公众公开 13-12-12 09:26 |
4、系统钩子与线程钩子:SetWindowsHookEx()函数的最后一个参数决定了此钩子是系统钩子还是线程钩子。//GetProcAddress(GetModuleHandle("GDI32.dll"),"ExtTextOutA"):取得要钩的函数在所在dll中的地址HookAllAPI("GDI32.dll",GetProcAddress(GetModuleHandle("GDI32.dll"),"TextOutW"),(P... 阅137 转0 评0 公众公开 13-12-12 09:06 |
计算机网络及Windowssocket网络编程 Windows socket之IOCP实例----IOCP开发驾照理论考试系统 Windows socket IO完成端口开发驾照理论考试系统实例 这一节我们讲解如何利用套接字完成端口开发驾照理论考试系统。在重叠IO模型中,当Windows socket应用程序在调用WSARe... 2013-01-21 16:31 阅读(5675) 评论(9) Windows socket... 阅249 转0 评0 公众公开 13-12-11 11:26 |
专栏:谈谈Windows核心编程系列。http://blog.csdn.net/ithzhang/article/details/8307633同步设备IO所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行。线程调度、优先级和关联性 每个线程都有一个CONTEXT结构,保存在线程内核对象中。windows编程dllthreadwinapilinker ithzhang 2011-12-07 22:24 阅读(1798) 评论(-1) ... 阅278 转0 评0 公众公开 13-12-11 11:24 |
因此在每个包含组件的DLL中,我们必须要输出以下两个函数:首先,客户调用COM库函数CoGetClassObject,此函数调用组件内提供的函数DllGetClassObject完成类厂的创建并返回类厂指针,然后使用类厂指针调用COM库IClassFactory::CreateInstance创建组件对象并返回接口指针。为了使DLL在所有组件都不使用后被卸载,需要在dll内维护一个当前可用组... 阅135 转1 评0 公众公开 13-12-11 11:23 |
//构造 void UpdateClientState(CClient *pClient,USHORT state); void Destroy(); bool SaveGradeIntoDB(CClient*pClient);//保存成绩到数据库。//发送包头: wsabuf[0].buf=(char*)&m_IoSend.hdr; wsabuf[0].len=sizeof(HDR); //发送包体。hdr.int ret=send(m_s,(char*)&hdr,sizeof(hdr),0);boo... 阅1646 转3 评0 公众公开 13-12-11 11:22 |
空闲线程堆栈:用于存储空闲线程。向任务队列添加任务后,会检查此时空闲线程堆栈中是否有空闲线程,如有则从任务队列队首取出任务执行。CThreadPool类:线程池类,用以创建并管理线程池,同时实现对线程池内线程的调度。之所以采用栈来存储线程类对象,是因为:当一个线程执行完任务后,如果此时任务队列没有新任务,该线程就被压入到空闲线程... 阅1083 转9 评0 公众公开 13-12-11 11:21 |
C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中。仅仅在其他文件中使用class a;声明是不行的,原因就是类的定义是内部链接,不会在目标文件导出符号。其实是因为由于cpp文件中存储的是成员函数的实现,而成员函数具有外部链接特性,会在目标文件产生符号。因为内联函数和静态自由函数、枚举以及const类... 阅56 转1 评0 公众公开 13-12-11 08:51 |