void __fastcall TForm1::FormCreate(TObject *Sender)
{
HWND hCurWindow,HC,HE;//定义三个窗口句柄变量,hCurWindow用于存放QQ用户登陆窗口的句柄,HC、HE分别存放号码框和密码框的句柄。
if((hCurWindow= FindWindow(NULL,"QQ用户登录"))!=0
(hCurWindow=FindWindow(NULL,"OICQ用户登录"))!=0)
{//很明显,调用FindWindow()函数去获得QQ登陆窗口的句柄
String str;
str.sprintf("0x%x",hCurWindow);
}
TCHAR wClassName[255];//类名变量
HC=GetWindow(hCurWindow, GW_CHILD);//得到号码框的句柄
HE=GetWindow(HC, GW_HWNDNEXT);//接着得到密码框的句柄
GetClassName(HE, wClassName, sizeof(wClassName));//得到类名
GetClassName(HC, wClassName, sizeof(wClassName));//得到类名
EnableWindow(HE,false);//使窗口失效
EnableWindow(HC,false);//使窗口失效
}
以上代码在C Builder下编译通过,只要运行次程式,QQ登陆窗口的号码框和密码框马上变黑色,如图1所示,无非是EnableWindow()函数所起的作用。
图1
您还能够添加一个Timer控件,将上面的代码copy到void __fastcall TForm1::Timer1Timer(TObject *Sender)函数中,并在后边加上这一句代码:
SendMessage(hCurWindow,WM_CLOSE,0,0); 使QQ一启动就关闭,让别人永远也用不了QQ,挺有趣儿的哦,(请参考光盘内的程式一)
⒏API和SDK:API是英文 Application Programming Interface 的简称,意为“应用程式接口”,泛指系统为应用程式提供的一系列接口函数。其实质是程式内的一套函数调用,在编程的时候能够直接调用,而不必知道其内部实现的过程,只知道他的原型和返回值就能够了,此外,手头经常放着一本“Windows API大全”之类的书也是必不可少的,不然您根本不知道哪些API是干什么用的,瞎编也编不出什么东西来。在后面我们会介绍调用API编程的例子,调用API编程工作虽然烦琐,但由于API函数都被封装在dll库里,程式只有在运行的时候才调用的,因此程式的体积小而且运行效率高。
SDK是英文 Software Development Kit 的缩写,指“软件研发工具包”,在防火墙的设计中就经常涉及到SDK。
有关基本的概念就谈这些,那些C/C 的基本语法、什么是面向对象等知识请大家查阅相关的书,此类书籍各大书店已汗牛充栋,不再多叙。下面直接谈谈语种和编程工具的选择问题,这也是初学者们最迷惑的问题。
二、编程语言连同工具的选择:
从上面的介绍我们对Windows 有了进一步的了解,现在就该开始行动了,选择要学的语言和工具是第一步,而且是很重要的一步工作,笔者建议一切以简单、易接受为原则,不然您会自信心大减的,何必偏要跟自己过不去自讨苦吃呢?
在开始的时候很多人都感到迷惑,现在的编程语言那么多,有c、c 、c#、java、汇编、html等等,究竟学哪些好呢?最开始我该学什么呢?甚至有人将vc、c builder也列为两种不同的语言!这些都是对编程语言缺乏了解造成的。笔者开始的时候也犯过同样的错误,曾给自己写过一份计划书:先学c语言,接着学c 、c#、java、汇编、vb、vc、c builder……,哪一种语言用多少时间去专攻等等,现在回想起来觉得多么的可笑!只要学得精,一门就够了。从实用的角度来讲,C 是最好的选择(个人意见,其实每一种语言都很好),而VC和C Builder是其相应研发工具的两大主流,笔者极力推荐初学者使用C Builder,因为很容易上手,假如一下子就用VC的话,也许会打击您的自信心:)。
三、谈谈促进编程能力提高的两个途径
假如您是个黑客技术的狂热者的话,到雅虎去搜索黑客教程的时候就会发现,很多的中文教程在谈到如何进行黑客编程时,十有八九都会介绍以下两大最好途径:一、读程式;二、写程式,并且都提出了教程作者的看法,下面我想谈谈这方面的个人观点。
⒈读程式:我将读程式放在前面是有原因的。在您没有阅读过一份完整的源代码之前,您别指望能写出有多好的程式来!这是对每一位初学者的忠告也是警告,而且必须具备一定的语言基础知识,这里的基础知识主要是指语法知识,最起码要能读懂别人的程式的每一行意思。有没有程式的设计思想,在这个时期并不重要,只要具备一定的语法基础就能够了,思想能够通过阅读完别人的源程式后分析得来。
记得在大一学习C语言的时候,我们都很重视语法的学习,整天都看教材、做练习,而且赶在老师的讲课前预习,课后又复习巩固,将一些语法点记得滚瓜烂熟,可后来一到做课程设计的时候,坐在电脑面前简直是老鼠拖鸡蛋—无从下手了,而且不断的问自己:“我平时的努力哪去了?语法都会了呀,怎么还是做不出程式来?”相信很多人都像笔者以前那样,错误地以为学会了语法就等于掌控了编程。
编程的能力包括经验、技巧、耐心等几个因素,而并非想象中的那样简单,更不要以为编程就是简简单单的写程式!
其实学一门语言并无需刻意去记那些条条框框的语法,在看代码的时候,碰到了不明白的地方再去查相关的资料,一点一点补充基础知识再配合源程式的思路,这时的理解才是最深刻的,我能够肯定地说,这个时候对语法的接受程度绝对比您刚开始时的死记要强!
读程式也不能单纯地读,要真正做到“俯而读,昂而思”。好的代码是百读不厌的,比如Shotgun的那道构造洪水Ping攻击的代码,我至少读了20遍。笔者喜欢将从网上搜集来的代码打印到纸上(尽管学校的打印费贵得要命,打一份代码就得花去十几块甚至几十块大洋~~~),然后边看边做好眉批,碰到一个新函数记下他的功能,一些忘记了的知识在旁边标出来,还能够写上对程式的看法等等。特别是碰到了一些新的API函数,最好标出来,对您以后编程的时候也许会用得着,最后别忘了分析一下程式的思路,这样对您以后编写类似的程式很有帮助的。
⒉写程式:问题可谈到点子上了,学那么多语言,读那么多程式最终还不是为了写程式,做出适合需要的软件来?“君子性非异也,善加于物也”,笔者认为一切从借鉴开始,先是修改别人的程式,等到有了一定的程度再写出属于自己的程式。
刚开始写程式,不要奢望一下子写出很出色的程式来,“万丈高楼平底起”,编程贵在动手,只要您动手去写了,就算只有一句“printf(“Hello!”);”也是一次进步!此外,还要依照自身的能力循序渐进地写,开始的时候写一点功能简单的、篇幅短小的代码,力求简洁、完整,“麻雀虽小,但五脏俱全”,然后在此基础上进行扩充,一点一点添加功能,下面笔者摘录一位国内一流编程高手、“豪杰终极解霸”的作者梁肇新的编程心得,请大家看看一个成功的程式员是如何写程式的,希望对广大菜鸟有所启发:
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




