![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC
StoneCracking
这个作者很懒,什么都没留下…
展开
-
MFC消息路由
消息分类: 1.标准消息(WM_XXX ,不包括WM_COMMAND) 2.命令消息(菜单消息,快捷键消息,工具栏按钮消息) 3.通告消息(由控件产生的消息)原创 2016-12-17 16:14:53 · 230 阅读 · 0 评论 -
进程间的通讯
两个独立的进程之间,都具有4GB的虚拟内存空间 它们之间的通讯可以通过以下办法 1.两个进程之间相互发生消息,达到通讯目的,携带的信息很有限#define WM_MYMSG WM_USER + 1 //自定义消息码HWND hWnd = ::FindWindow(NULL, "目标程序窗口名");::PostMessage(hWnd, WM_MYMSG, (WPARAM)1, (LPARAM原创 2016-12-20 00:19:34 · 285 阅读 · 0 评论 -
线程消息+HOOK+皮肤
1.线程的消息通讯SendMessage 》》向窗口派发PostMessage 》》向窗口派发.向线程发消息:PostThreadMessage() 不是每个线程都能拥有消息队列, windows系统中,必须是UI线程,才能从系统中分配到一个属于线程自己的消息队列, 如果在线程回调函数中使用到了以下两个API,系统会认定该线程是一个UI线程: GetMessage(); CreateWi原创 2016-12-28 20:50:18 · 493 阅读 · 0 评论 -
C库函数多线程
CreateThread()_beginThread();// #include <process.h>// Setting->Code Generate -> use run-time library:// 跨平台,某些参数需要根据特定平台进行类型强制转换线程局部存储TLS(Thread Local Storage) /MTd /MT /MSVCRTD.DLL /MSVCRT.DLL原创 2016-12-28 15:51:30 · 371 阅读 · 0 评论 -
进程内存数据的操作
//读进程内存数据BOOL ReadProcessMemory( HANDLE hProcess, // handle to the process LPCVOID lpBaseAddress, // base of memory area LPVOID lpBuffer, // data buffer SIZE原创 2016-12-19 23:07:31 · 453 阅读 · 0 评论 -
获取线程句柄的三种方法
获取线程句柄的三种方法 1.通过进程的PID并调用API函数:HANDLE OpenProcess( DWORD dwDesiredAccess, // access flag BOOL bInheritHandle, // handle inheritance option DWORD dwProcessId //原创 2016-12-19 18:52:58 · 8302 阅读 · 0 评论 -
多线程-事件
CreateEvent(//SD//(=TRUE 手动上锁),(=FALSE 自动上锁)//事件的初始状态,TRUE表示锁是开的状态//事件名)OpenEvent(权限名字)//防止多开办法之一if(OpenEvent() == NULL){ //系统没有该实例在运行,创建进程}else{ return;//表示已经有实例在运行,不再创建,直接退出}//主线程通知原创 2016-12-23 18:49:43 · 548 阅读 · 0 评论 -
多线程之二
同步 msdn查Synchronization Functions 不同线程共享同一个资源,在线程切换过程中,会产生不可预料的结果 用户方式同步 3环态 锁 InterLockxxxxxx互锁函数向总线发送一个硬件信号,防止另一个cpu访问同一个内存地址//循环锁//InterlockedExchange//利用InterlockedExchange实现上锁: bool i原创 2016-12-23 12:49:18 · 226 阅读 · 0 评论 -
多线程之一
线程状态:运行态就绪态阻塞态多线程:主线程处理界面,消息循环创建子线程去执行非界面非消息循环,特别是一些耗时的任务相关API 创建线程 CreateThread退出线程 ExitThread挂起线程 SuspenedTread恢复线程 ResumeThread终止线程 TerminateThread获取当前进程句柄 GetCurrentThread获取线程退出码 GetE原创 2016-12-22 15:59:50 · 277 阅读 · 0 评论 -
unresolved external symbol _WinMain@16
MFC在工程里把_MBCS改为UNICODE出现: msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 Debug/Key.exe : fatal error LNK1120: 1 unresolved externals解决办法: Project->Settings->Link->C原创 2016-12-26 00:41:00 · 347 阅读 · 0 评论 -
MFC-菜单的动态(增加 插入 删除 响应)
增加菜单int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ CMenu menu; menu.CreateMenu();//新建菜单 menu.AppendMenu(MF_STRING, 101, "刷新");//新建子菜单的菜单项1 menu.AppendMenu(MF_STRING, 102, "复制");//新建原创 2016-12-17 17:27:32 · 4533 阅读 · 1 评论 -
MFC DLL
其他:DLL劫持防范:可以采用数字签名,通过计算DLL文件的数字签名,在加在时候进行验证即可。Regular DLL:凡是支持DLL技术的都可以使用,不限于MFC程序使用。Exten DLL:MFC DLL的扩展,用来导出MFC类,一般仅在MFC中使用。条件宏:AFX_EXT_CLASS#ifndef AFX_EXT_DATA #ifdef _AFXEXT #define原创 2016-12-16 15:33:20 · 224 阅读 · 0 评论 -
静态库和动态库
64位系统:SYSWOW64文件夹存放了32位的DLL库,但是在64位系统测试DLL的查找路径时候,可能会得到DLL的文件夹位置还是system32(这里面是系统做了某种重定向)64位系统的64位DLL文件存放的文件夹是system32void outputDllPathchar szBuf[MAXBYTE] = 0;DWORD dwRet = GetModuleFileName(NU原创 2016-12-14 18:28:16 · 201 阅读 · 0 评论 -
文件内存映射 DLL共享 WM_COPYDATA
进程之间通讯的手法: - WM_COPYDATA - 共享DLL - 内存映射 - socket - 管道 - 邮件槽 1 WM_COPYDATA 有两份数据拷贝:第一次发送到操作系统高2GB共享区,然后再拷贝到目标进程的地址空间,适用于数据量不大的场合//COPYDATASTRUCT原型typedef struct tagCOPYDATASTRUCT { ULONG_原创 2016-12-21 01:24:46 · 933 阅读 · 0 评论