- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
黑客基础
从理论上说,任何一门语言都可以在任何一个系统上编程,只要找到该系统提供的“接 口”和对系统内部机制有深
入的了解就可以了,至少我是这么认为的。正如c语言可以在windows下编程,也同样可 以在Linux上大放异彩一样。
编程是-•项很繁杂的工作,除了应用编程工具之外,了解系统本身内部工作机理非常重 要,这是你写岀稳定兼容的
程序所必不可少的前提条件。你要在哪一种系统上编程就要对该系统的机制进行研究,至少 你应该知道一个程序在那个
系统上是如何运行的。
—、了解Windows内部机制
Windows是一个“基于事件的,消息驱动的”操作系统。
在Windows下执行一个程序,只要用户进行了影响窗口的动作(如改变窗口人小或移 动、单击鼠标等)该动作就会
触发一个相应的“事件”。系统每次检测到一个事件时,就会给程序发送一个“消息”,从而 使程序对以处理该事件。
每个Windows应用程序都是基于事件和消息的,而且包含一个主事件循环,它不停地、反 复地检测是否有用户事件发
生。每次检测到一个卅户事件,程序就对该事件做出响应,处理完再等待卜一个事件的发生。
Windows下的应用程序不断地重复这一过程,直至用户终止程序,用代码来描述实际 上也就是一个消息处理过程
的while循坏语句。
下面便简单介绍一下与Windows系统密切相关的儿个慕木概念:
1•窗口:这是我要说的笫一个概念。似乎是地球人都知道的事儿了,窗口是Windows 本身以及Windows坏境卜■的
应用程序的基本界面单位,但是很多人都误以为只冇具冇标题栏、状态栏、最大化、最小化 按钮这样标准的方框才叫 窗口。具实窗口的概念很广,例如按钮和对话椎等也是窗口哦,只不过是一种特殊的窗口罢
Zo
从用八的角度看,窗口就是显示在屏幕上的一个矩形区域,•其外观独立于应用程序,事 实上它就是生成该窗口
的应用程序与用户间的直观接口;从应用程序的角度看,窗口是受其控制的一部分矩形屏幕 区。应用程序生成并控
制与窗口有关的一切内容,包括窗口的人小、风格、位置以及窗口内显示的内容等。川户打 开一个应用程序后,程
序将创建一个窗口,并在那里默默地等待用户的耍求。每当用户选择窗口中的选项,程序即 对此做出响应。
2•程序:通常说的程序都是指一个能让计算机识别的文件,接触得最多的便是.exe型的 可执行文件,这个不难
理解。
3.进程:说到进程,学过《操作系统》的人都很清楚,所谓进程就是应用程序的执行实 例(或称一个执行程序)
需要注意的是:进程是程序动态的描述,而上血说到的程序是静态的描述,两者有本质的区 别。举个例子,从网上
Down 了一个瑞星杀壽软件到C盘但没有运行,那个.exe可执行文件叫做程序,它是一•个二 进制码的文件。一旦双击
了 exe文件图标运行程序,那个“正在运行看的瑞星杀毒”便称为进程,它在双击的那一刻 被系统创建,当你关机
或者在任务栏的图标上单击鼠标右键选“退出”吋,进程便消亡,彻底结束了生命。进程经 历了由“创建”到
“消亡”的牛•命期,而程序自始至终存在于你的硬盘上,不管你的机器是否启动。
4•线程:线程是进程中的一个执行单元,同一个进程中的各个线程对应于一组CPU指 令、一组CPU寄存器以及一
堆栈。进程木来就具有动态的含义,然而实质上是通过线程来执行体现的,从这个意义上说, Windows中进程的动
态性意义已经不是很明显了,只算是给程序所占的资源划定一个范围而已(个人观点,纯属 个人理解,不必引起争
议!),真正具冇动态性意义的是线程。以前在人二学习操作系统课的时候就何个同学跟笔者 提起这点,笔者还跟
他驳得而红耳赤呢!现在想想,觉得很有道理,不得不佩服那位同学对Windows内部机制 了解得如此清楚。
之所以在此花那么多的篇幅说线程,是因为下血将要介绍到多线程编程技巧,如果不理 解这点,那就很难应
用到实践上,希望大家明白。
5•消息:我们几乎做每一个动作都会产生一个消息,在用鼠标指点江山的今天,鼠标被 移动会产牛WM.MOUSEMOVE
消息,鼠标左键被按下会产生WM_LBUTTONDOWN的消息,鼠标右键按下便产生 WM_RBUTTONDOWN消息等等。所有的这些都
可以通过GetMessage, SendMessage等两数得到,以后的操作屮我们会经常接触到这些两数。
6•事件:何谓事件?从它的字面意思我们就可以明白它的含义,如在程序运行的过程中 改变窗口的大小或者移动
窗口等,都会触发相应的“事件”。
7•句柄:单单一个“柄”字便可以解释它的意思了,我们天气热摇扇子的时候只要抓住 扇柄便可以控制整个扇子
的运动了,在程序屮也差不多是这个意思。通常一个句柄就可以传递我们所要做的事情。有 经验的读者肯定清楚,编
写程序总是要和各种句柄打交道的
文档评论(0)