行内技术
把Flash文件转换为Exe文件
下面的代码把一个Flash文件转换为exe文件.functionSwf2Exe(S,D,F:string):string;//S=Sourcefile(swf)//D=Destionationfile(exe)//F=FlashPlayervarSourceStream,DestinyStream,LinkStream:TFileStream;flag:Cardinal;SwfFileSize:Integer;beginResult:=''somethingerror'';&n...
2013-3-5334
用Delphi实现文件下载的几种方法
我的主页:http://www.tommstudio.com/笔者最近开发的系统中需要写一个下载文件的功能。以前用BCB调用API写的很烦琐,忽然想起有一个API就可以搞定了,于是一大早就来搜索。这个API就是UrlDownloadToFile。不仅如此,Delphi的一些控件也可以轻松实现下载,如NMHTTP,指定NMHTTP1.InputFileMode:=ture;指定Body为本地文件名,指定Get就可以下载了。下面是详细代码,均出自CSDN。我把它们都整理到这儿,让大家方便查阅。usesUrlMon;functionDownloadFile(Source,Dest:...
2013-3-5377
VC++编程实现广告窗口自动关闭
  摘要:本文对自动关闭网络广告窗口的软件实现原理及具体实现过程作了介绍。  关键字:广告窗口、自动关闭、VisualC++6.0  一、引言  我们在上网浏览时,有时访问到某些网站的网页时会自动弹出一些广告窗口,甚至有不少个人主页为了利用网络广告来赚钱一下同时弹出几个甚至十几个广告窗口。这些窗口一个一个的关掉十分麻烦,而且如果不关的话又会占用大量的系统资源,所以不少人对此深恶痛绝,作为程序员可以利用自身技术优势根据自己的实际需要编制一些很适合自己的小工具。因此本文就对如何通过软件编程来实现对广告窗口的自动关闭进行介绍,以期能起到抛砖引玉之效。  二、程序设计思路与实现...
2013-3-5445
编写安全的SQL Server扩展存储过程
  SQLServer的扩展存储过程,其实就是一个普通的WindowsDLL,只不过按照某种规则实现了某些函数而已。  近日在写一个扩展存储过程时,发现再写这类动态库时,还是有一些需要特别注意的地方。之所以会特别注意,是因为DLL运行于SQLServer的地址空间,而SQLServer到底是怎么进行线程调度的,却不是我们能了解的,即便了解也无法控制。  我们写动态库一般是自己用,即便给别人用,也很少像SQLServer这样,一个动态库很有可能加载多次,并且都是加载到一个进程的地址空间中。我们知道,当一个动态库加载到进程的地址空间时,DLL所有全局与局部变量初始化且仅初始化一次,以...
2013-3-5473
Visual C++打造Windows信使服务程序
  信使服务是Windows2000/XP下面的一种通信服务,通过它我们可以在网上象QQ一样进行实时的交流,但和QQ不同的是信使服务不需要拥有一个号码,它只要知道对方的IP地址--如果在局域网中,只要知道对方的计算机名就可以了。我们可以利用"netsend"在命令行下面发送消息,也可以通过"控制面板-管理工具-计算机管理"中的"操作"菜单里面的"所有任务-发送控制台消息…"来发送。接收方的计算机要求必须是Win2000/XP,因为Win9x本身是不提供信服服务的,除非你手动启动了WinPopup.。程序编译运...
2013-3-5475
C++箴言:理解inline化的介入和排除
  inline函数——多么棒的主意啊!它们看起来像函数,它们产生的效果也像函数,它们在各方面都比宏好得太多太多,而你却可以在调用它们时不招致函数调用的成本。你还有什么更多的要求呢?  实际上你得到的可能比你想的更多,因为避免函数调用的成本只是故事的一部分。在典型情况下,编译器的优化是为了一段连续的没有函数调用的代码设计的,所以当你inline化一个函数,你可能就使得编译器能够对函数体实行上下文相关的特殊优化。大多数编译器都不会对"outlined"函数调用实行这样的优化。  然而,在编程中,就像在生活中,没有免费午餐,而inline函数也不例外。一个inli...
2013-3-5402
C程式中关于整数储存的说明
writebypolaris(lz0ace@hotmail.com)转载请注明作者首先感谢玲对我的支持,在我最困难时是她帮助了我。声明一下,高手就不要看了,这篇文章只是随便写写,解决一些C编程新手的问题。废话少说先看程序:------------------------------start------------------------------------------structbit{unsigneda_bit:2;//为bit结构体中的a_bit成员分配两字节的空间unsignedb_bit:2;//为bit结构体中的b_bit成员分配两字节的空间unsi...
2013-3-5416
C++箴言:避免析构函数调用虚函数
  如果你已经从另外一种语言如C#或者Java转向了C++,你会觉得,避免在类的构造函数或者析构函数中调用虚函数这一原则有点违背直觉。但是在C++中,违反这个原则会给你带来难以预料的后果和无尽的烦恼。  正文  我想以重复本文的主题开篇:不要在类的构造或者析构函数中调用虚函数,因为这种调用不会如你所愿,即使成功一点,最后还会使你沮丧不已。如果你以前是一个Java或者C#程序员,请密切注意本节的内容-这正是C++与其它语言的大区别之一。  假设你有一个为股票交易建模的类层次结构,例如买单,卖单,等等。为该类交易建立审计系统是非常重要的,这样的话,每当创建一个交易对象,在审计登录...
2013-3-5451
C++箴言:防止异常离开析构函数
  C++并不禁止从析构函数中引发异常,但是这确实妨碍了实践。至于有什么好的理由,考虑:    classWidget{   public:    ...    ~Widget(){...}//assumethismightemitanexception  };    voiddoSomething()  {   std::vectorv;   ...  }//visautomaticallydestroyedhere  当vectorv被析构时,它有责任销毁它包含的所有Widgets。假设v中有十个Widgets,在销毁第一个的时候,...
2013-3-5502
C++箴言:让=返回一个*this的引用
 关于赋值的一件有意思的事情是你可以把它们穿成一串。    intx,y,z;  x=y=z=15;//chainofassignments  另一件有意思的事情是赋值是右结合的,所以,上面的赋值串可以解析成这样:    x=(y=(z=15));  这里,15赋给z,然后将这个赋值的结果(最新的z)赋给y,然后将这个赋值的结果(最新的y)赋给x。  这里实现的方法就是让赋值运算符返回一个左侧参数的引用,而且这就是当你为你的类实现赋值运算符时应该遵守的约定:    classWidget{   public:    .....
2013-3-5586
C++箴言:资源管理类的拷贝行为
  在上一篇文章中介绍了作为资源管理类支柱的ResourceAcquisitionIsInitialization(RAII)原则,并描述了auto_ptr和tr1::shared_ptr在基于堆的资源上运用这一原则的表现。并非所有的资源都是基于堆的,然而,对于这样的资源,像auto_ptr和tr1::shared_ptr这样的智能指针通常就不像resourcehandlers(资源管理者)那样合适。在这种情况下,有时,你可能要根据你自己的需要去创建你自己的资源管理类。  例如,假设你使用CAPI提供的lock和unlock函数去操纵Mutex类型的互斥体对象:    voi...
2013-3-5382
C++箴言:只要可能就用const
  关键字const非常多才多艺。在类的外部,你可以将它用于全局常量或命名空间常量,就像那些在文件、函数或模块范围内被声明为static的对象。在类的内部,你可以将它用于static和non-static数据成员上。对于指针,你可以指定这个指针本身是const,或者它所指向的数据是const,或者两者都是,或者都不是。  chargreeting[]="Hello";    char*p=greeting;//non-constpointer,  //non-constdata    constchar*p=greeting;//non-con...
2013-3-5405
C++箴言:视类设计为类型设计
  在C++中,就像其它面向对象编程语言,可以通过定义一个新的类来定义一个新的类型。作为一个C++开发者,你的大量时间就这样花费在增大你的类型系统。这意味着你不仅仅是一个类的设计者,而且是一个类型的设计者。重载函数和运算符,控制内存分配和回收,定义对象的初始化和终结过程——这些全在你的掌控之中。因此你应该在类设计中倾注大量心血,接近语言设计者在语言内建类型的设计中所倾注的大量心血。  设计良好的类是有挑战性的,因为设计良好的类型是有挑战性的。良好的类型拥有简单自然的语法,符合直觉的语义,以及一个或更多高效的实现。在C++中,一个缺乏计划的类设计,使其不可能达到上述任何一个目标。甚至一...
2013-3-5489
C++箴言:声明为非成员函数时机
  我谈到让一个类支持隐式类型转换通常是一个不好的主意。当然,这条规则有一些例外,最普通的一种就是在创建数值类型时。例如,如果你设计一个用来表现有理数的类,允许从整数到有理数的隐式转换看上去并非不合理。这的确不比C++的内建类型从int到double的转换更不合理(而且比C++的内建类型从double到int的转换合理得多)。在这种情况下,你可以用这种方法开始你的Rational类:    classRational{   public:    Rational(intnumerator=0,//ctorisdeliberatelynotexplicit;    in...
2013-3-5469
C++箴言:将强制转型减到最少
  C++的规则设计为保证不会发生类型错误。在理论上,如果你的程序想顺利地通过编译,你就不应该试图对任何对象做任何不安全的或无意义的操作。这是一个非常有价值的保证,你不应该轻易地放弃它。  不幸的是,强制转型破坏了类型系统。它会引起各种各样的麻烦,其中一些容易被察觉,另一些则格外地微妙。如果你从C,Java,或C#转到C++,请一定注意,因为强制转型在那些语言中比在C++中更有必要,危险也更少。但是C++不是C,也不是Java,也不是C#。在这一语言中,强制转型是一个你必须全神贯注才可以靠近的特性。  我们就从回顾强制转型的语法开始,因为对于同样的强制转型通常有三种不同的写法。C...
2013-3-5420
用VC++实现http代理
为了帮网友些个用http下载动画的程序,临时在网上翻了翻,看看有没有利用http代理来下载的例子。结果,似乎很多人都愿意去转载一个有头无尾的例子,还美其名曰“我在查阅RFC文档和相关资料后,特总结一些TCP协议穿透代理服务器的程序片断,希望对大家有所帮助。”  如果真的想帮助大家,为什么不说的详细一些?  无奈之下,自己去翻rfc文档,找了些资料,写了这个利用http代理来下载文件的资料  代码如下:  (1)一些基本变量SOCKETHTTPSocket;//主socketstructsockaddr_inSocket...
2013-3-5490
C++程序设计从零开始之指针
  前面说了在C++中是通过变量来对内存进行访问的,但根据前面的说明,C++中只能通过变量来操作内存,也就是说要操作某块内存,就必须先将这块内存的首地址和一个变量名绑定起来,这是很糟糕的。比如有100块内存用以记录100个工人的工资,现在要将每个工人的工资增加5%,为了知道各个工人增加了后的工资为多少,就定义一个变量floata1;,用其记录第1个工人的工资,然后执行语句a1+=a1*0.05f;,则a1里就是增加后的工资。由于是100个工人,所以就必须有100个变量,分别记录100个工资。因此上面的赋值语句就需要有100条,每条仅仅变量名不一样。    上面需要手工重复书写变量定义...
2013-3-5382
C++程序设计从零开始之语句
  前面已经说过程序就是方法的描述,而方法的描述无外乎就是动作加动作的宾语,而这里的动作在C++中就是通过语句来表现的,而动作的宾语,也就是能够被操作的资源,但非常可惜地C++语言本身只支持一种资源——内存。由于电脑实际可以操作不止内存这一种资源,导致C++语言实际并不能作为底层硬件程序的编写语言(即使是C语言也不能),不过各编译器厂商都提供了自己的嵌入式汇编语句功能(也可能没提供或提供其它的附加语法以使得可以操作硬件),对于VC,通过使用__asm语句即可实现在C++代码中加入汇编代码来操作其他类型的硬件资源。对于此语句,本系列不做说明。  语句就是动作,C++中共有两种语句:单句...
2013-3-5315
VC++中非法探取密码的原理及其防范
作者:青岛郎锐  引言  在Windows下输入密码时,为了安全起见通常都以星号来屏蔽用户输入的密码。如果需要在自己编写的应用程序中需要用户输入密码,通常的选择就是选用Edit控件并设置其Password属性。虽然Edit控件的Password属性在一定程度上可以保护用户的密码不被视觉偷窥,但在许多窥探密码的黑客软件面前却不起任何作用,密码将赫然暴露于攻击者面前。显然仅仅依靠Edit控件本身的Password功能已不能胜任保护用户密码的作用了,这就需要我们根据此类黑客软件的攻击方式来采取相应的措施来阻止密码被非法获取。本文将首先分析非法获取Password的原理及工作方式,然后给...
2013-3-5486
为VC++应用程序对话框添加透明位图
作者:刘涛  我们在进行程序的界面设计时,常常希望将位图的关键部分,也既是图像的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本实例介绍了透明位图的制作知识,并将透明位图在一个对话框中显示了出来,界面效果如图一所示:图一、对话框界面上透明显示位图  一、实现方法  绘制"透明"位图是指绘制某一位图中除指定颜色外的其余部分,我们称这种颜色为"透明色"。通过将位图的背景色指定为"透明色",在绘制时,不绘制这部分背景,而仅绘制图像,这样就可以将位图中图像透明地绘制到...
2013-3-5563