![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows 编程
文章平均质量分 83
xiao_0429
这个作者很懒,什么都没留下…
展开
-
MFC 框架学习
MFC框架学习1. 最简单的框架程序:使用MFC基础类库,编写一个最简单的框架程序: #include class CMyApp: public CWinApp{public:BOOL InitInstance();}; CMyApp MyApp; BOOL CMyApp::InitInstance(){CFrameW原创 2011-05-16 08:02:00 · 914 阅读 · 0 评论 -
dll加载问题的解决方法
dll加载问题的解决方在使用LoadLibrary() 和LoadLibraryEx()加载dll文件的时候,会产生下面的错误:this application has failed to start because XXXXX.dll was not found. Re-installing the application may fix this problem.其中xxx转载 2014-09-14 10:01:07 · 1139 阅读 · 0 评论 -
VC2008中影响exe大小和速度的全部编译选项
转自:http://www.cppblog.com/woaidongmao/archive/2009/10/19/98920.aspx我再次强调,完全脱离编程环境的C/C++学习方法,不是好的方法,现在所谓的环境中立理论就是“什么都不学”理论,VC、GCC,主流的就两个,精通其中一个就能吃遍天下,教材里就应该选择一个大讲特讲! 作为VC的代表,今天我给大转载 2014-10-22 13:46:32 · 555 阅读 · 0 评论 -
调试方法备份
1. 崩溃时自动挂接调试器可以使用如下的命令,将Windbg.exe挂接为即时调试工具。 C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe -I2. 程序启动时自动启动调试器 有时,可能需要调试由另一个进程启动的应用程序的启动代码。 这样的示例包括服务和自定义设置操作。 在这些情况原创 2015-07-29 17:53:10 · 3062 阅读 · 0 评论 -
使用IAT表注入模块到进程中 样例
模块注入到进程的方法有很多,想一一写例子,学习一下,也练习一下! 首先先从IAT表注入开始吧! 如果了解PE文件的格式的话,原理很简单。当一个模块被系统加载起来后,会遍历模块的导入表,将静态导入的函数地址填充到导入表中,以便进程执行起来后,调用到该模块时,能够使用导入函数。要获取导入函数地址,首先要将导出该函数的模块加载起来。 那方法来了,原创 2015-07-30 23:55:10 · 5363 阅读 · 0 评论 -
我看保护模式
保护模式,对于学过操作系统的人来说,是一个熟悉而又陌生的概念。之所以熟悉,就是所有的操作系统的书籍都会说到保护模式;之所以陌生,我敢说很多人学完了之后,压根不晓得什么是保护模式,怎么算是保护模式,再者就是它到底保护了什么东西。 “你说的不对,怎么能一棒子打死一帮人!保护模式就是进程相互隔离,实现多任务;就是有分页机制,可以节约内存。”,暂且不说对于不对,其实我也不知道我理解的是否原创 2015-08-02 16:01:10 · 4915 阅读 · 0 评论 -
常用函数/功能块 记录
1. 获取高精度时间戳 主要用于测试一段代码的执行时间。通过CPU的 tick-per-secs 来获取,可以精确到微秒甚至更高。比GetTickCount() API精确到毫秒要更加精确。 代码如下: LARGE_INTEGER StartingTime, EndingTime, ElapsedMicroseconds; LARGE_INTEGER Fr原创 2015-07-24 21:47:09 · 3889 阅读 · 0 评论 -
X64编程总结
X64编程和X86还是有一些不同的地方,总结一下日常用到的东西,便于以后查看:1. 调用约定 调用约定对于函数调用有影响,不同的函数调用,在汇编中会因为函数调用后栈不平衡而崩溃,在C/C++语言中如果使用函数指针或以函数作为参数,造成调用栈的不平衡而崩溃。函数调用方式,说到底是函数调用栈不同。 X86的函数调用方式主要有:stdcall / cdecl /原创 2015-09-11 20:51:48 · 3499 阅读 · 0 评论 -
关于Windows系统调用
以Kernel32.dll 中的 ReadFile 方法为例:首先找到 kernel32!ReadFile 函数,从如下截取的汇编代码中可以看到,改函数会调用kernel32!_imp__NtReadFile指向的函数kernel32!ReadFile+0xd2:7c801962 bb03010000 mov ebx,103h7c801967 891e原创 2015-09-07 22:23:33 · 4039 阅读 · 0 评论 -
关于Detours/Minhook挂钩引擎的UnHook
关于Detours/Minhook挂钩引擎的UnHook 文章本身可能用处不大,很少有人会用到所说的这些,权当积累。 一直在使用Detours 和 MinHook 两个Hook引擎进行一些系统API的挂钩,实现特殊的功能。就如标题所用词,UnHook,很少将一个已经Hook的函数再次进行UnHook,所以一直没有注意到问题所在。同事的提醒,让自己有了一点兴趣原创 2015-09-19 11:43:55 · 5752 阅读 · 0 评论 -
GetLastError错误码
参考http://msdn.microsoft.com/en-us/library/ms681381(v=vs.85).aspx【0|0】-操作成功完成。【0x1|1】-函数不正确。【0x2|2】-系统找不到指定的文件。【0x3|3】-系统找不到指定的路径。【0x4|4】-系统无法打开文件。【0x5|5】-拒绝访问。转载 2015-11-30 22:45:02 · 22896 阅读 · 0 评论 -
cl.exe编译程序问题
cl.exe 问题解决 在dos下利用 cl命令编译cpp时,容易出现问题。下面介绍解决方案: 1. 在“我的电脑--属性--高级--环境变量”中, 添加如下变量: INCLUDE D:\Program Files\Microsoft Visual Studio\VC98\Include LIB D:\Program Files\Microsof转载 2012-04-06 22:03:25 · 1727 阅读 · 0 评论 -
没有窗口的定时器
在没有窗口的程序中转载 2014-08-26 18:27:43 · 649 阅读 · 0 评论 -
对“仅通过崩溃地址找出源代码的出错行”一文的补充与改进
转自: http://www.vckbase.com/index.php/wv/1192.html读了老罗的“仅通过崩溃地址找出源代码的出错行”(下称"罗文")一文后,感觉该文还是可以学到不少东西的。不过文中尚存在有些说法不妥,以及有些操作太繁琐的地方 。为此,本人在学习了此文后,在多次实验实践基础上,把该文中的一些内容进行补充与改进,希望对大家调试程序,尤其是release版本的程序有帮转载 2014-06-10 12:59:50 · 792 阅读 · 0 评论 -
MFC 原理学习笔记
MFC原理学习笔记 1.首先,我们根据以上的四个程序可知,主函数的作用是注册,创建和显示窗口,实现消息循环。 由此我们可以将程序中抽象出两个类:窗口类(CFrameWnd),这是很自然的事,由窗口类来完成窗口操作的一系列工作。同时我们将主函数的内容封装为一个类,应用程序类(CWinApp)。 1)窗口类中有主函数中窗体创建可知应该有窗口类定义,窗口类注册原创 2011-05-16 07:49:00 · 659 阅读 · 0 评论 -
AfxGetApp->GetMainWnd()与AfxGetMainWnd的不同
前台线程与后台线程,AfxGetApp->GetMainWnd()与AfxGetMainWnd的不同 顾名思义,前台指看得见,既然看得见自然要有窗口,而后台是看不见,看不见可以理解为没有窗口,既然没有窗口,那么用AfxGetMainWnd()取得其窗口句柄,未免有些搞笑,为什么呢?聪明的你想必早已明白,如果你曾经跟踪过AfxGetMainWnd()的调用,会发现它取得的是AFX_MO转载 2012-11-30 19:49:22 · 940 阅读 · 0 评论 -
VC中利用多线程技术实现线程之间的通信
VC中利用多线程技术实现线程之间的通信 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力。用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义。现在的大型应用软件无一不是多线程多任务处理,单线程的软件是转载 2012-11-30 21:06:38 · 495 阅读 · 0 评论 -
MFC中CAsyncSocket及其派生类对象跨线程使用方法
MFC中CAsyncSocket及其派生类对象跨线程使用方法 存在的现象:在MFC中用多线程方法开发WinSocket通讯程序时,如果你的的是API方式,自然没有以下说的问题。但如果当你使用CAsyncSocket及其派生类(CSocket或是你自己的写的)来开发的话,会发现在不同线程中使用CAsyncSocket及其派生类对象时,会出现程序崩溃。这里所说的跨线程,是指该对象在一个线程转载 2012-11-30 21:28:01 · 1389 阅读 · 0 评论 -
将VS2008工程在VS2005中打开(转载加整理)
将VS2008工程在VS2005中打开(转载加整理)第一种方法:1. 用记事本打开sln文件,将:Microsoft Visual Studio Solution File, Format Version 10.00# Visual Studio 2008改成:Microsoft Visual Studio Solution File, Format原创 2013-06-06 21:38:39 · 651 阅读 · 0 评论 -
Windows平台下非阻塞Socket模型总结
Windows平台的5种非阻塞Socket编程模型:Select模型(集合管理多个Socket,集合中有64个元素,可以管理1024个socket) Socket通信库所提供的一种异步接收与发送的机制,它是独立于平台的,无论是Linux还是Windows都可以使用。 使用了一个FD_SET变量,将想要“监听”的Socket加入该集合中,调用Selec原创 2013-06-06 22:17:18 · 2444 阅读 · 0 评论 -
VS 2005 下错误:syntax error : missing ';' before identifier 'PVOI
VS 2005 下错误:syntax error : missing ';' before identifier 'PVOI在另外一台机子上运行好的程序,换了一台就不行了。。。在VS2005上使用DirectShow,首次编译发现出现以下错误: error C2146: syntax error : missing ';' before identifie转载 2013-07-02 17:24:47 · 978 阅读 · 0 评论 -
总结VC6对话框控件访问的七种方式
总结VC6对话框控件访问的七种方式 总结对话框控件访问的七种方式 一、GetDlgItem()->Get(Set)WindowText(ch3);二、GetWindowText()/SetDlgItemText();三、GetDlgItemInt()/SetDlgItemInt();四、将控件和整形变量相关联;五、将控件和控件变量相关联;六、SendMessag转载 2013-08-04 08:25:43 · 6390 阅读 · 0 评论 -
《Windows程序设计》笔记之一——第一个Windows程序以及Windows程序原理
1.API和内存模式: API包含了所有应用程序构造操作系统的函数调用,也包含了相关的数据类型和结构。 它形成了一个一个特殊的程序体系结构 Windows1.0到3.0中使用分段内存模式,在分段内存模式下,内存地址分为两部分—— 一个16位段指针和一个16为偏移指针。其中带来了long或far指针(包括段地址和偏移量地址)和short或near指针(原创 2013-11-22 17:08:33 · 4314 阅读 · 0 评论 -
《Windows程序设计》读书笔记之二——输出文字与滚动条使用
8. 输出文本: 客户区是整个应用程序窗口中未被标题栏、串口边框以及可选菜单栏、工具栏、状态栏和滚动条占据部分。简言之,客户区是窗口中可以由任意书写和传递可是信息的部分。 尽管可以创建固定大小的窗口,但是多数情况下用户应该能够改变应用程序窗口的大小。您的程序必须能够接受指定给它的大小,并且合理地利用这一空间。 两种可能:一种是程序只有仅能显示“hel原创 2013-11-27 11:17:11 · 2890 阅读 · 0 评论 -
Windows 7 与 360安全卫士共同作用下调试程序的一些问题
声明:本文没有黑360安全卫士的意思,相反,感觉原创 2014-06-04 10:22:06 · 1383 阅读 · 0 评论 -
Windows中获取线程起始地址
偶尔碰到了一个小需求,要验证一个线程起始于某个模块,可以限制对代码的执行,起始于特定的线程。 线程的起始地址StartAddress,保存在了 _ETHREAD 结构中,无法从Ring3获取。kd> dt _ethread 80553740 ntdll!_ETHREAD +0x000 Tcb : _KTHREAD +0x1c0 Cre原创 2016-05-13 21:56:36 · 7244 阅读 · 0 评论