C/C++
文章平均质量分 75
zy122
这个作者很懒,什么都没留下…
展开
-
四种方法实现VC枚举系统当前进程
四种方法实现VC枚举系统当前进程 在Windows 2000以上的MS操作系统,通过Windows的任务管理器可以列出当前系统的所有活动进程(如图1所示),在Windows XP中,更是在控制台下增加了一条Tasklist命令,让系统下的所有进程无所遁行(如图2所示)。这一切是怎么实现的呢? 引用侯捷大师在《深入浅出MFC》的一句话,“知其然而不知其所以然,真不是个好办法”。既然如此,我们干脆自己转载 2007-01-22 11:17:00 · 1093 阅读 · 0 评论 -
VC++中利用MSXML解析XML文档
四、程序实现 下面通过一个具体的实例来说明在VC++中如何利用MSXML解析XML文档。 (1)源XML文档(xmlfile.xml)如下: <?xml version="1.0" encoding="GB2312"?> <Device id="10041" name="设备1"> <Type>13</Type> <TypeName>保护</TypeName> </转载 2007-01-04 10:57:00 · 1169 阅读 · 0 评论 -
手把手教你玩转SOCKET模型之重叠I/O篇
前 言 其实我首先应该道歉,因为7月份的时候曾信誓旦旦的说要写一套关于SOCKET所有模型的入门文章以及配套代码,不过没想到后天竟然被美女所迷出去度假了,刚刚回来不久。。。。。。-_-b其实那些模型的配套代码我已经基本写完了,只是没写配套文字,不过我想还是先从稍微难一点的模型写起吧,因为其他模型的入门毕竟要简单一些。 不过由于也是初学者,疏漏之处还望不吝指正。 本文凝聚着笔者心血,如要转载,请指明转载 2007-01-04 16:38:00 · 1357 阅读 · 0 评论 -
简单分析用SPI实现防火墙
简单分析用SPI实现防火墙 作者:snsins 如有转载,请注明并保持文章的完整 2002.12.5 -------------------------------------------------------------------------------------------------------- 本来上次写了一个简单的SPI防火墙程序(只做了IP过滤功能,包过滤功能没有去做)后,已经转载 2007-01-04 15:18:00 · 2412 阅读 · 0 评论 -
Raw Socket(原始套接字)实现Sniffer(嗅探)
Raw Socket(原始套接字)实现Sniffer(嗅探) 一. 摘要 Raw Socket: 原始套接字 可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP... int sockRaw = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); 这样我们就创建了一个 Raw Socket Sniffer: 嗅探器 关于嗅探器的原理我想转载 2007-01-04 13:55:00 · 1039 阅读 · 0 评论 -
学习掌握重点:如何学好C++,用好类库很重要
科学计算 Blitz++ 参考网站:http://www.oonumerics.org/blitz/ Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像C++ 一样方便,同时又比Fortran速度更快的数值计算环境。通常,用C++所写出的数值程序,比 Fortran慢20%左右,因此Blitz++正是要改掉这个缺点。方法是利用C++的template技术,程序执行甚至可转载 2006-12-30 16:42:00 · 1044 阅读 · 0 评论 -
UTF-8字符集基础
字符集简史 在所有字符集中,最知名可能要数被称为ASCII的7位字符集了。它是美国信息交换标准委员会(American Standards Committee for Information Interchange)的缩写, 为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。 但是,由于他是针对英语转载 2006-12-26 15:10:00 · 1538 阅读 · 0 评论 -
如何获取某个动态链接库的版本信息
我如何获得安装在我的系统上的某个特定的 DLL 的版本信息?我尝试着确定系统安装了哪个版本的 comctl32.dll。我见过有些代码调用 GetProcAddress 来获取各种函数,如 InitCommonControlsEx,以确定基于不同版本的函数调用。对于我来说,这是一个坎儿,到底用什么方法获得版本号? 有两种方法:容易的和难的。容易的方法是调用一个专门用于此目的的函数 DllGetVe转载 2006-12-28 14:29:00 · 1975 阅读 · 0 评论 -
VC知识库在线杂志
VC知识库在线杂志http://www.vckbase.net/vckbase/default.aspx原创 2006-12-28 14:26:00 · 907 阅读 · 0 评论 -
用MFC的消息映像实现动态菜单
--- 当我们提到动态菜单的实现时,我们通常的做法是使用GetMenu() 函数获取一个Cmenu 类指针,然后调用CMenu 类方法AppendMenu, InsertMenu, ModifyMenu, RemoveMenu 等。本文介绍一种更加简洁的方法,它利用MFC 的消息映像机制及CCmdUI 类方法来实现。 ---- 首先,我们简要说说VC 中MFC 的消息映像。每个Windows 程转载 2006-12-28 14:26:00 · 721 阅读 · 0 评论 -
Windows程序设计 学习(1)
Windows程序设计 学习(1) #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, PSTR szCmdLine,int iCmdShow){ static TCHAR sz原创 2006-08-04 09:30:00 · 719 阅读 · 0 评论 -
本人BLOG正式开张
欢迎大家多多捧场原创 2006-08-03 20:39:00 · 640 阅读 · 0 评论 -
Visual C++ MFC 中常用宏的含义
AND_CATCH(exception_class,exception _object_point_name) 说明: 定义一个代码块,它用于获取废除当前TRY块中的附加异常类型。使用CATCH宏以获得一个异常类型,然后使用AND_CATCH宏获得随后的异常处理代码可以访问异常对象(若合适的话)已得到关于异常的特别原因的更多消息。在AND_CATCH块中调用THROW_LAST宏以便把处理过程移到转载 2006-12-14 16:51:00 · 807 阅读 · 0 评论 -
监听以太网(四) Packet32函数SDK
Packet32包中的函数说明: No.3. PacketSetHwFilter (设置过滤器) 设置一个hardware filter。比如,Filter参数传递NDIS_PACKET_TYPE_PROMISCUOUS,就可以设置网卡为混杂模式。 BOOLEAN PacketSetHwFilter( LPADAPTER AdapterObject, ULONG Filter ); Paramet转载 2006-12-01 14:57:00 · 2316 阅读 · 1 评论 -
监听以太网(二) Packet32包说明续
Packet32包中的函数说明: No.2. PacketOpenAdapter (打开网卡) 根据传入的设备名,打开它。 LPADAPTER PacketOpenAdapter( LPTSTR AdapterName ); Parameters: AdapterName: [in] 要打开的设备的名字。 Return Values: 如果打开成功,返回一个指针,它指向一个正确初始化了的ADAPT转载 2006-12-01 14:56:00 · 1403 阅读 · 0 评论 -
监听以太网(一) Packet32包说明
简述 监听网络上的所有数据,是一个比较有趣的题目。流传比较广的一些监听程序,它们都使用了一个更加著名的开发包Packet32。比如,ntsniff、EthernetSpy、ntpacket等,还有赫赫有名的WinPcap。应用程序通过它可以设置网卡的工作模式,直接在网卡上读写数据,等等。 一般使用的Packet32的实现版本,是微软的Packet32.c和Packet32.h。这个版本写得比较转载 2006-12-01 14:56:00 · 2387 阅读 · 1 评论 -
监听以太网(三) Packet32数据结构说明
Packet32包中的数据结构: 第一个重要的数据结构:_ADAPTER(关于Network Adapter的) typedef struct _ADAPTER { // 一个打开的NPF driver实例的句柄: HANDLE hFile; // 当前打开的网卡的名字: CHAR SymbolicLink[MAX_LINK_NAME_LENGTH]; // 在这块Adapter上,一个数据包被写转载 2006-12-01 14:59:00 · 1221 阅读 · 0 评论 -
VC操作XML编程实例
XML编程实例 文章正文 前段时间,由于工作的需要,利用到了XML,所以对其进行了一些简单的研究。在此愿把一些心得写出来,与各位分享,不对的地方还望多多包涵。 1.什么是 XML? 首先,我想各位应该都已经大概知道什么是XML了。如果,你对什么是XML还没有一个概念的话,你可以看一些相关的材料,我就不多说了。 2.为什么要用XML? 其实,刚开始我也不是很明白,后来在工作中才慢慢意识到。首先,我写转载 2007-01-04 11:12:00 · 2937 阅读 · 0 评论 -
Windows 2000下的Raw Socket编程
Windows2000在TCP/IP协议组件上做了很多改进,功能也有增强。比如在协议栈上的调整,增大了默认窗口大小,以及高延迟链接新算法。同时在安全性上,可应用IPSec加强安全性,比NT下有不少的改进。 Microsoft TCP/IP 组件包含“核心协议”、“服务”及两者之间的“接口”。传输驱动程序接口 (TDI) 与网络设备接口规范 (NDIS) 是公用的。 此外,还有许多用户模型应用程序的转载 2007-01-05 10:52:00 · 1252 阅读 · 2 评论 -
Windows下多线程编程技术及其实现
一、问题的提出 作者最近在开发基于Internet网上的可视电话过程中,碰到了这样一个问题。在基于Internet网上的可视电话系统中,同时要进行语音采集、语音编解码、图象采集、图象编解码、语音和图象码流的传输,所有的这些事情,都要并行处理。特别是语音信号,如果进行图象编解码时间过长,语音信号得不到服务,通话就有间断,如果图象或语音处理时间过长,而不能及时的传输码流数据,通信同样也会中断。这样就要转载 2007-01-04 12:12:00 · 947 阅读 · 0 评论 -
Windows 下的进程间通讯及数据共享
Windows 下有很多方法实现进程间通讯,比如用 socket,管道(Pipe),信箱(Mailslot),等等。但最基本最直接的还是使用内存共享。其他方法最终还是会绕道这里。 可想而知,如果物理内存只有一份,让这份内存在不同的进程中,映射到各自的虚拟地址空间上,每个进程都可以读取同一份数据,是一种最高效的数据交换方法。下面我们就讨论如何实现它。 共享内存在 Windows 中是用 FileMa转载 2007-01-23 15:11:00 · 1117 阅读 · 0 评论 -
VC 中进程与多进程管理的方法
进程是当前操作系统下一个被加载到内存的、正在运行的应用程序的实例。每一个进程都是由内核对象和地址空间所组成的,内核对象可以让系统在其内存放有关进程的统计信息并使系统能够以此来管理进程,而地址空间则包括了所有程序模块的代码和数据以及线程堆栈、堆分配空间等动态分配的空间。进程仅仅是一个存在,是不能独自完成任何操作的,必须拥有至少一个在其环境下运行的线程,并由其负责执行在进程地址空间内的代码。在进程转载 2007-01-23 11:05:00 · 1048 阅读 · 0 评论 -
如何获取线程关联用户名和域名
在Windows NT/2000/XP上编写程序时,有时会需要我们获取与当前调用线程关联的用户名和域名(domain),本文下面将示范在Windows NT/2000/XP环境里如何使用Win32 API有关安全的函数来获取用户名和域名。 在Windows NT之前,一般都假设某个线程是运行在登录用户的帐号之下。但Windows NT问世以后,允许线程可以在多个安全上下文中运行,言下之意就是一个线转载 2007-01-22 14:00:00 · 1651 阅读 · 0 评论 -
剖析Windows任务管理器开发原理与实现
Windows2000/XP内含的任务管理器(Taskmgr)相信大家都熟悉吧,相比之下XP里的要比2000功能更加强大,返回的信息也更加的详细,不过您是否觉得还有很多希望获得的消息没有包含在里面吗?您是否觉得Windows的系统管理工具箱里的东西太分散了吗?下面就让我们看看它们的开发原理,并动手实现一个真正的任务管理器。现在我们是调用Win32API来实现这些功能的,但是大家都说MS隐藏了太多的转载 2007-01-22 11:31:00 · 1034 阅读 · 0 评论 -
关闭计算机就这几招
关闭计算机就这几招 注:完全翻译整理自MSDN。非常简单. Vcbear. “系统ShutDown”属于Windows系统的一种基本服务。功能上有“关闭系统”,“注销用户”,“锁定工作站”3中操作。SDK中提供了几个函数,来对此服务进行调用。 “关闭系统”功能使计算机可以被安全的关闭。所有在文件系统里缓冲的内容都被强制写入磁盘。然后,显示相应的对话框,提示用户计算机将被关闭或者已经准备好被关闭。可转载 2007-01-19 15:58:00 · 873 阅读 · 0 评论 -
获到网卡MAC地址
CString GetMacAddress() { PIP_ADAPTER_INFO pinfo = NULL; unsigned long len = 0; unsigned long nError; nError = GetAdaptersInfo(pinfo,&len); if (nError == 0) { if (pinfo != NULL) { CString temp; temp.F转载 2007-01-19 15:23:00 · 823 阅读 · 0 评论 -
链表的C语言实现之循环链表及双向链表
一、循环链表 循环链表是与单链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的链。 循环链表的运算与单链表的运算基本一致。所不同的有以下几点: 1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。 2、转载 2007-01-15 16:08:00 · 1113 阅读 · 0 评论 -
UML语言各种图形的建立步骤
1. 用例图的建立步骤: 1〉 找出系统外部的活动者和外部系统,确定系统的边界和范围。 2〉 确定每一个活动者所希望的系统行为。 3〉 把这些系统行为命名为用例。 4〉 把一些公共的系统行为分解为一批新的用例,供其它的用例引用。把一些变更的行为分解为扩展用例。 5〉 编制每一个用例的剧本。 6〉 绘制用例图。 7〉 区分主业务流和例外情况的事件流。可以把表达例外的情况的事件流的用例图画成一个单独的转载 2007-01-09 10:21:00 · 1356 阅读 · 0 评论 -
在 Windows 下使用 Timer 驱动游戏
在 Windows 平台下写游戏,相比 console 等其它平台,最麻烦之事莫过于让游戏窗口于其它窗口良好的相处。 即使是全屏模式,其实也还是一个窗口。如果你不去跑窗口的消息循环,一个劲的刷新屏幕,我估计要被所有 Windows 用户骂死。 那么怎样让你的游戏程序做一个 Windows 下的良好公民呢? 最简单的方法是用循环用 PeekMessage 来处理 Windows 消息,一旦消息队列为转载 2007-01-08 16:50:00 · 888 阅读 · 0 评论 -
原始套接字伪造发包
源代码如下: int TcpOptScan::send_tcp_raw( SOCKET sd, struct in_addr *srcAddr, struct in_addr *desAddr, u16 srcPort, u16 desPort, u32 seq, u32 ack, u8 flags,u16 window, u8 *options, int optlen, char *data,转载 2007-01-10 16:01:00 · 2575 阅读 · 0 评论 -
基于SPI的数据报过滤原理与实现
一、个人防火墙技术概述 随着网络安全问题日益严重,广大用户对网络安全产品也越来越关注。防火墙作为一种网络安全工具,早已受到大家的青睐。在PC机上使用的个人防火墙,很大程度上成为广大网民的安全保护者。Windows下的个人防火墙都是基于对数据报的拦截技术之上。当然在具体的实现方式上它们却有很大的不同。总的来说可分为用户级和内核级数据报拦截两类。其中内核级主要是TDI过滤驱动程序,NDIS中间层过滤驱转载 2007-01-08 14:51:00 · 915 阅读 · 0 评论 -
活动桌面处理和一个例子
活动桌面处理和一个例子 问题: 在应用程序中如何激活活动桌面(Active Desktop)?一般情况下用户可以在桌面单击右键,选择“活动桌面”=〉“按Web页查看”来打开/关闭活动桌面特性。有没有什么函数可以程序中调用来实现对活动桌面的操作?另外,如何断定用户激活或取消活动桌面? 解答: 在回答这个问题之前,让我给你一个重要警告。那就是如果你打算开关活动桌面特性,请保证经过了用户的许可!最好使用转载 2006-12-31 14:31:00 · 1821 阅读 · 0 评论 -
基于Visual C++的Winsock API研究
为了方便网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。Socket实际在计算机转载 2006-12-31 11:30:00 · 971 阅读 · 0 评论 -
使用Sniffer截获流经本机网卡的IP数据包
Win2K下的Sniffer工具源代码 详细信息 Win2K下的Sniffer源代码。 [代码性质] VC完整应用程序代码 [代码作者] zw [文件大小] 130K [更新日期] 2002-11-26 19:47:00 [下载次数] 6015 http://www.vckbase.com/code/downcode.asp?id=1692 IP包监听程序(For 9x)源代码 详细信息 IP转载 2007-01-04 15:16:00 · 1508 阅读 · 1 评论 -
TCP/IP头格式
TCP/IP头格式 一、先是常用的IP头格式。 IP头格式: 版本号 (4位) IP头长度 (4位) 服务类型 (8位) 数据包长度 (16位) 标识段 (16位) 标志段 (16位) 生存时间 (8位) 传输协议 (8位) 头校验和 (16位) 发送地址 (16位) 目标地址 (16位) 选项 填充 简单说明 ============ 1. IP头长度计算所用单位为32位字, 常用来计算数据开始转载 2007-01-04 15:14:00 · 5894 阅读 · 0 评论 -
利用HOOK拦截封包原理
截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。 首先,我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookEx的声明如下: HHOOK SetWindowsHookEx( int idHook, // hook type HOOKPROC lpfn, // hoo转载 2007-01-04 15:04:00 · 897 阅读 · 0 评论 -
使用视频捕获
3.2.1创建捕获窗体 下面的例子通过使用capCreateCaptureWindow函数来创建一个捕获窗体 hWndC = capCreateCaptureWindow ( (LPSTR) "My Capture Window", // 如果是Pop-up窗口的窗口名称 WS_CHILD | WS_VISIBLE, // 窗口类型 0, 0, 160, 120, // 窗口位置和尺寸 (HWND转载 2006-11-20 14:24:00 · 1085 阅读 · 0 评论 -
错误代码中文查询GetLastError返回代码的含义
〖0〗-操作成功完成。 〖1〗-功能错误。 〖2〗-系统找不到指定的文件。 〖3〗-系统找不到指定的路径。 〖4〗-系统无法打开文件。 〖5〗-拒绝访问。 〖6〗-句柄无效。 〖7〗-存储控制块被损坏。 〖8〗-存储空间不足,无法处理此命令。 〖9〗-存储控制块地址无效。 〖10〗-环境错误。 〖11〗-试图加载格式错误的程序。 〖12〗-访问码无效。 〖13〗-数据无效。 〖14〗-存储器不足,转载 2006-11-20 14:16:00 · 7460 阅读 · 1 评论 -
hook-简要实现
hook一般建立在dll中。在dll中完成hook安装,卸载。hook安装:hhook = ::SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)beep, hInstance, 0);其中WH_KEYBOARD是hook要监控的类型,这儿是键盘消息。(HOOKPROC)beep是截获消息后的处理函数hInstance是要安装钩子的程序实例,如果某个程序是给自转载 2006-11-14 11:45:00 · 515 阅读 · 0 评论 -
WDM驱动程序入门(1)——HelloWDM
WDM驱动程序是一种很新的东西,相信很多人都跟我一样,对它很感兴趣,但是又找不到学习的切入点。究其原因,还是因为WDM是一种非常“死板板”的程序,它一运行就是工作在系统的底层RING 0处,提供各种接口给应用程序调用。也正因为如此,它不像普通的应用程序一样,可以很快地上手——更多的时候,你是在阅读它的技术资料和各种接口信息,你还要非常地熟悉系统底层的工作原理,否则一个不小心,就“蓝屏”了,呵呵——转载 2006-11-15 11:01:00 · 986 阅读 · 0 评论