{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam)
·278 ·
…………………………………………………………Page 290……………………………………………………………
第 10 章 动态链接库
{
// ESC F1~F12
case VK_ESCAPE:msg = 〃Press Key ……ESCAPE〃;break;
case VK_F1:msg = 〃Press Key ……F1〃;break;
case VK_F2:msg = 〃Press Key ……F2〃;break;
//此处省略了部分代码,详见本书的附带光盘目录下的 hook。cpp 文件;
if(KeyNameStr==〃Num = 〃)
msg = 〃Press Key ……VK_UP〃;
if(KeyNameStr==〃Num Del〃)
msg = 〃Press Key ……VK_UP〃;
AfxMessageBox(msg);
}
LRESULT RetVal = CallNextHookEx( hkb; nCode; wParam; lParam );
return RetVal;
}
程序运行结果如图 10…10 所示。
图 10…10 键盘钩子实例运行结果
从上面的代码可以看出,在加载键盘钩子的时候传入当前的线程 ID 号,从而创建线程
钩子。此钩子函数仅仅针对当前进程有效,即在其他进程处于活动状态时钩子并不生效,这
也是线程钩子和全局钩子的重要区别。
10。8 本章小结
本章介绍了动态链接库和钩子函数的概念和编程方法 。首先讲述了动态链接库的应用背
DllMain()入口函数、Dll 导出函数的概念和显示链接和隐式链接 DLL 的方法。通过 Visual
景、
C++ 6。0 可以编写标准的 Win32 动态链接库和基于 MFC 的常规和扩展动态链接库,本章给出
了利用 AppWizard 开发各种不同动态链接库的方法。在 DLL 中嵌入 Windows 资源有着广泛
的应用,在介绍如何调用 DLL 中的对话框资源的基础上,通过界面汉化的实例介绍了 DLL
资源在软件本地化中的应用。
钩子函数也是一个重要的 Windows 编程概念,本章介绍了不同的钩子函数类型和它们的
应用方法。在全局钩子的应用中离不开动态链接库的应用,全局鼠标钩子的实例演示了加载
一个全局的钩子函数的方法。同时,在实际应用中也需要仅仅针对特定线程的钩子函数,键
盘钩子实例演示了创建一个线程钩子函数定对不同的键盘消息进行处理的过程。
·279 ·
…………………………………………………………Page 291……………………………………………………………
第 11 章 网络编程
第 11 章 网络编程
在众多的计算机技术中,网络技术恐怕是和人们关系最紧密的计算机技术了。近年来,
网络以超乎想象的速度飞速发展,已经逐渐渗透到人们的生活中。在这种趋势下,编写网络
应用程序就成为一项常见的技能。本章将系统地介绍网络编程的有关知识,主要包括以下内
容:
o 网络编程的基础知识;
o 网络应用程序的基本结构及流程;
o WinSock 类详解;
o 通过一个具体的例子详细说明网络编程的实现;
o 利用 MSm 控件进行串口编程。
11。1 网络编程的基础知识
当今主要的网络模型有 OSI 参考模型、TCP/IP 参考模型、NetBEUI 参考模型和 IPX/SPX
参考模型,其中最常用的是 TCP/IP 参考模型,本章也以 TCP/IP 参考模型来讲解网络编程技
术。
11。1。1 Socket 简介
上世纪 80 年代初,加利福尼亚大学 Berkeley 分校在 UNIX 操作系统下实现了 TCP/IP 协
议,它们为 TCP/IP 网络通信开发了一个应用程序接口(API ),这个 API 称为 socket (套接
字)接口。socket 给程序员提供了一个高层接口,它的出现使得程序员在编写网络应用程序
时只需要调用函数,对网络的底层细节并不需要精通,因此十分方便。
Socket 在 UNIX 上的巨大成功使得人们迫切想要在 Windows 上也得到同样的便利。在
Windows3。0 之后,Socket 逐渐引入到 Windows 操作系统中。Windows Socket 不仅包含了
Berkeley Socket 的库函数,并且针对 Windows 的消息驱动机制的特性,包含了一组针对
Windows 的扩展的库函数。在 Intel、Microsoft 、Sun、SGI、Informix 、Novell 等公司的大力
支持下,Windows Socket (以下简称WinSock )从 1991 年的 1。0 版发展到了 1996 年的 2。2。0
版。如今,WinSock 已经成为 Windows 网络编程的标准。
11。1。2 Windows 套接字规范简介
Windows 套接字规范从 1991 年的 1。0 版发展到 1996 年的 2。2。0 版,其中几个标志性的版
本有 WinSock1。0 、WinSock1。1 和 WinSock2。0 。
…………………………………………………………Page 292……………………………………………………………
第 11 章 网络编程
1.WinSock1。0
WinSock1。0 是网络软件供应商和用户协会细致周到的工作结晶。WinSock1。0 规范的发布
是为了让网络软件供应商和应用程序开发者都能够开始建立各自符合 WinSock 标准的实现和
应用程序。
2 .WinSock1。1
WinSock1。1 除了继承 WinSock1。0 的准则和结构外,还作了一些必要的改动。这些改动
除了包含了一些更加清晰的说明和对 WinSock1。0 的小改动之外,还包含了如下重大的变更。
o 为了更加简单的得到主机名和地址,增加了 gethostname()函数。
o 在 DLL 中保留了小于 1000 的序数,而对大于 1000 的序数则没有限制,这使 WinSock
供应商可以在 DLL 中加入自己的界面,而不用担心所选择的序数会和 WinSock 将来
的版本冲突。
o 增加了 WSAStartup() 函数和 WSACleanup() 函数之间的关联,要求两个函数对应,这使
得应用程序开发者和第三方 DLL 在使用 WinSock 实现时不需要考虑其他函数对这套
API 的调用。
o 调整函数 in_addr() 的返回类型,in_addr 的结构改为无符号长整型,这个改动是为了适
应不同的 C 编译器对返回类型为 4 字节结构函数的不同处理方法。
o 把 WSASsyncSelect() 函数语义从“边缘触发”改为“电平触发”,这种方式大大简化了
应用程序对这个函数的调用。
o 改变了 ioctlsocket()函数中 FIONBIO 的语义。如果套接字还未完成 WSASsyncSelect()
函数的调用,则该函数返回失败。
o 为了符合 RFC1122 ,在套接字选项中增加了 TCP_NODELAY 。
不过 WinSock1。1 版本只支持 TCP/IP 协议。
3 .WinSock2。0
WinSock2。0 是 WinSock1。1 发展的一个比较重大的变革。它可以支持多种协议,并且为
了能与 WinSock1。1 更好地实现其兼容性,WinSock2。0 在 WinSock1。1 基础上作了向后兼容,
即源码和二进制代码。这就实?
小说推荐
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 最新章:第214章
- C语言设计
- 作者:谭浩强1 C 语言概述1.1 C语言的发展过程1.2 当代最优秀的程序设计语言1.3 C语言版本1.4 C语言的特点1.5 面向对象的程序设计语言1.6 C和C+1.7 简单的C程序介绍1.8 输入和输出函数1.9 C源程序的结构特点1.10书写程序时应遵循的规则1.11C语言的字符集1.12
- 最新章:第45章
- 设计成婚:不入豪门
- 作者:海未央《设计成婚2:名门新娘》作品介绍《名门新娘》介绍:她是骆家收养的孤女,性格因为受他的影响,变得有些古灵精怪,也懂得是非之分!他说他的一切只为他而努力,可是为什么要拒绝自己呢?什么?没有满十八岁?那今天生日,够十八岁了吧?什么,还太小?太过分了,这不是耍着自己玩吗?嘿嘿,有个邪恶的老师,那
- 最新章:第196章
- 玄学,从入门到放弃
- 《玄学,从入门到放弃》作者:李传言文案:周诣一手拿着卜卦,一手拿着《演员的自我修养,叹息良久。他本是百年前观天占星的玄术师,谁知却一朝重生现代。他只想平淡地生活下去,可天不遂人愿,他注定将在这末法时代掀起波澜!成就一代影帝!谢千仇沉默地看着他…大师,你卦和书都拿倒了#玄学,从入门到放弃,入土,删库跑
- 最新章:第86章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- 要你言听计从
- 作者:决明第一章哈士奇,没有护卫看家的本领,对主人、客人甚至是闯空门的恶人都一样友善,咬着皮球跟小偷一块玩你丢我捡也不用太惊讶,时常被人认为忠诚度不足。贺世祺背靠在冰冷玻璃落地窗前,一整间屋子都是伸手不见五指的黑暗,也好,反正他现在什么也不需要看到,只要耳朵还有听觉就好,顺便听听贴在耳边的手机里还要
- 最新章:第28章