摘要: 有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的**头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能,还是我们自己动手来DIY吧.拦截网络数据封包的方法有三种,一是将网卡设为混杂模式,这次就可以监视到局域网上所有的数据包,二是HOOK目标进程的发送和接收的API函数,第三种方法是自己实现一个代理的DLL.在这里我们使用HOOK API的方法,这样易于实现,而且也不会得到大量的无用数据(如第一种方法就会监视到所有的网络数据).下面是一个尽量简化了的API HOOK的模版,原理是利用 阅读全文
posted @ 2013-04-29 14:03 小天1981 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。一:select模型二:WSAAsyncSelect模型三:WSAEventSelect模型四:Overlapped I/O 事件通知模型五:Overlapped I/O 完成例程模型六:IOCP模型老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。这和Socket模型非常类似。下面我就以老陈接收信件为例讲解Socket I/O模型~~~一:select模型老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~ 阅读全文
posted @ 2013-04-29 13:59 小天1981 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 记得多年前在接触SQL的时候,偶尔就会莫名安装SQL2000失败。每次这样都捣鼓半天,最后还是不知所措。导致后来我对SQL2000产生恐惧,SQL2005一出立即就用SQL2005了。 今天在公司重装系统,在安装SQL2000时又遇见该问题,总是在启动服务时失败!由于公司有任务,没太多时间再装系统。根据它的提示查看日志文件。提示为:“安装程序配置服务器失败。参考服务器错误日志和C:\windows\sqlstp.log”,查看该文件内容为“一般性网络错误”。在Google上G一把。终于找到多年来一直困扰我问题的原因! 此问题属于sql server的bug, GetComputerName 用 阅读全文
posted @ 2013-04-29 13:55 小天1981 阅读(337) 评论(0) 推荐(0) 编辑
摘要: TCP连接建立与关闭相信各位读者现在对於 Winsock 的定义、系统环境,以及一些 Winsock Stack及 Winsock 应用程式,都有基本的认识了。接下来笔者希望能分几期为各位读者介绍一下简单的 Winsock 网路应用程式设计。我们将以 Winsock 1.1 规格所定义的 46 个应用程式介面(API)为基础,逐步来建立一对 TCP socket 主从架构(Client / Server)的程式。在这两个程式中,Server 将使用 Winsock 提供的「非同步」(asynchronous)函式来建立 socket 连结、关闭、及资料收送等等;而 Client 则采类似传统 阅读全文
posted @ 2013-04-29 13:54 小天1981 阅读(167) 评论(0) 推荐(0) 编辑
摘要: function IsValidIP(Str: string): Boolean;vari, PartCount {用多少段,以点号分开}: Integer;Part: string;beginPartCount := 0;while Str <> '' dobegin i := Pos('.', Str); if i = 0 then begin Part := Str; Str := ''; end else begin Part := Copy(Str, 1, i - 1); Delete(Str, 1, i); end; // 阅读全文
posted @ 2013-04-29 13:53 小天1981 阅读(500) 评论(0) 推荐(0) 编辑
摘要: 设置它的几个属性:BevelEdges|_ beLeft = False;|_ beTop = False;|_ beRight = False;|_ beBottom=True; //就是下面那根横线了BevelInner=bvNone;BevelKind =bkSoft;BevelOuter=bvRaised;BorderStyle=bsNone;ParentColor=True;就这些了,看看效果吧!! 阅读全文
posted @ 2013-04-29 13:50 小天1981 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 部分朋友注意到自己的 Live Hotmail 的 发信/收信 记录里的时间不对,会错上好几个小时,这是为什么,难道 Live Hotmail 延时发送/接收了我的邮件?经过了解这是由于 Windows Live Hotmail 电子邮件上的时间戳是根据 您在 Windows Live ID 个人注册信息中指定的时区进行设置的。如果该时间戳显示得不正确,您需要确认在 Windows Live ID 个人注册信息中时区设置是否正确。1. 登陆 Windows Live ID 账号管理页:https://account.live.com2. 进入 个人注册信息 修改页面;3. 在这里选择你所处的 阅读全文
posted @ 2013-04-29 13:48 小天1981 阅读(346) 评论(0) 推荐(0) 编辑
摘要: IF Not Exists(select * from syscolumns where [name]='字段名'and OBJECTPROPERTY(id,'IsUserTable')=1 and object_name(id)='表名')beginAlter Table [表名] add 字段名 nvarchar(50)end 阅读全文
posted @ 2013-04-29 13:44 小天1981 阅读(784) 评论(0) 推荐(0) 编辑
摘要: 1. 关于嵌入桌面原理很简单,找到 Progman 并将窗口 SetParent 过去即可(当然也可以嵌入到 Progman 的子窗口以保证窗口不覆盖桌面的图标,不过我的要求是我的窗口必须覆盖桌面图标,呵呵)但是问题来了,我发现我的窗口在桌面上F5或者Win+D的时候会隐藏,尝试拦截 WM_SYSCOMMAND/SC_MINIMIZED消息无效但是其他嵌入桌面的程序则没有此问题查看了一下Window Style,发现我的窗口的 Ex Style 多了一个 WS_EX_APPWINDOW 属性(因为是主窗口)但是我的主窗口此属性去不掉,因此 New 了一个 Form 动态创建后 OK代码(就一句 阅读全文
posted @ 2013-04-29 13:43 小天1981 阅读(295) 评论(0) 推荐(0) 编辑
摘要: SQLite是一个很好用的单机数据库,体积小巧,支持大多数SQL 92语法,速度快,健壮,使用和分发都很简单。但是免费开源版并不提供加密功能,需要加密得购买原作者的一个插件,价格$2000!我们只好使用第三方的加密版本,这是被逼的。当然还有一个选择就是,在开源的C文件中已经预留了加密接口,有能力的可以自己去实现。闲话休提。第三方的加密版本已经有人实现了,还不止一个。下面分别介绍一下:※ SQLite原装版,http://www.sqlite.org/目前最新版本是。但我们现在不使用它的DLL而用第三方,所以可以无视它了。需要源文件的可以去下载。 ※ 第三方其一是用于.NET环境下的System 阅读全文
posted @ 2013-04-29 13:41 小天1981 阅读(1465) 评论(0) 推荐(0) 编辑
摘要: 操作时写的代码并不多,主要问题是需要将所有的数据读内存表不太合适,在修改上应该可以将数据源改为动态。使用的重点是设置DbGridEh1的RowDetailPanel打开,再将DbGridEh2放入,设置MemTableEh2的MasterFields和DetailFields,接入数据源,好,出锅!使用这个功能要注意一点,MasterDBGridEh的DataSet必须是MemtablEh,而DetailDBGridEh的Dataset却可以为其它DataSet类。 阅读全文
posted @ 2013-04-29 13:39 小天1981 阅读(546) 评论(0) 推荐(0) 编辑
摘要: procedure windowsposchange(var Msg:TWMWINDOWPOSCHANGING);message WM_WINDOWPOSCHANGING;varForm13: TForm13;//oleft:integer;otop:integer;owidth:integer;oHeight:integer;implementation{$R *.dfm}procedure TForm13.FormCreate(Sender: TObject);beginoleft:=Left;otop:=Top;owidth:=Width;oheight:=Height;end;proc 阅读全文
posted @ 2013-04-29 13:38 小天1981 阅读(147) 评论(0) 推荐(0) 编辑
摘要: //首先看它的声明:function Format(const Format: string; const Args: array of const): string; overload;//事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的,//但并不多用,所以这里只对第一个介绍:function Format(const Format: string; const Args: array of const): string; overload;//Format参数是一个格式字符串,用于格式化Args里面的值的。Args又是什么呢,//它是一个变体数组,即它 阅读全文
posted @ 2013-04-29 13:36 小天1981 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 今天调试一个开源的例子程序,无意中发现一个IDE用来测试内存泄漏的语句。不过应该是Delphi2006以后的版本才能使用。实施方法方法非常简单,在Project source中加入如下第一条语句。ReportMemoryLeaksOnShutdown := DebugHook <> 0;Application.Initialize;Application.CreateForm(TForm1, Form1);Application.Run;为了测试效果,在你的主窗体onCreate事件中写一个引起泄漏的Test Case。varsl : TStringList;beginsl := 阅读全文
posted @ 2013-04-29 13:32 小天1981 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 主表:单号 客户aa abcbb baccc cab从表:单号 产品明细 数量aa A1 100aa A2 500aa A3 1000bb B1 3000bb B2 1500cc C1 200cc C2 280cc C3 300期望报表格式:单号 客户 产品明细 数量aa abc A1 100 A2 500 A3 1000bb bac B1 3000 B2 1500cc cab C1 200 C2 280 C3 300我用以下方法实现可是不能完全满足我的要求:用 adoquery1 连接主表(select * from 主表),然后在adoquery1的afterscroll过程中用adota 阅读全文
posted @ 2013-04-29 13:30 小天1981 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 从原来使用cxGrid4系列开始,都是使用ExportGrid4ToExcel的办法,可是使用了6系列后,发现这个办法已经不行了,从Dev官方找了解决办法。usecxGridExportLink;procedure TMainForm.cxButton_MemoExcelClick(Sender: TObject);beginif SaveDialog1.Execute thenbeginExportGridToExcel(SaveDialog1.FileName,cxGrid1,True,True,True);end;end;///////////注意:ExportGridToExcel导出 阅读全文
posted @ 2013-04-29 13:28 小天1981 阅读(195) 评论(0) 推荐(0) 编辑
摘要: library project1;uses Windows, SysUtils, MSODSApi;... {$R * .res}Function GetParamStr(pSrvProc: SRV_PROC; Index : integer; Var Param : String ) : integer;var PType : Byte; cbMaxLen , ParaLen : DWORD; IsNULL : BOOL;begin Result : = NO_ERROR; srv_paraminfo(pSrvProc, index, @PType, @cbMaxLen, @ParaLen, 阅读全文
posted @ 2013-04-29 13:26 小天1981 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 如果需要传递对象参数则放在函数参数里,这样就由调用者来创建和释放对象。例:[允许] function SomeOne(list:PStrList):boolean;当然,NewXXX之类的创建对象的函数除外。一直存在的全局对象也除外,这些全局对象将在初始化时创建,结束时释放。类定义中如果重载了Destory必须在里面加上inherited,否则不会释放的。使用对象(object)还是记录结构(record)。在有关性能方面的服务程序中:只产生单个实例或少于10个实例则允许使用对象。否则一律使用记录结构。在GUI方面都使用对象,但是不得超过五级继承。纯数据信息必须使用记录结构。错误、异常处理规则 阅读全文
posted @ 2013-04-29 13:24 小天1981 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1.防止刷新时闪烁的终极解决办法{ 防止刷新时闪烁的终极解决办法(对付双缓冲无效时) }Perform($000B, 0, 0); //锁屏幕 防止闪烁// 做一些会发生严重闪烁的事情..//解锁屏幕并重画Perform($000B, 1, 0);RedrawWindow(Handle, nil, 0, RDW_FRAME + RDW_INVALIDATE + RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);2.图片上显示透明文字//图片上显示透明的文字//直接用.Canvas.Brush.Style:=bsClear;//然后.Canvas.TextOut(x, 阅读全文
posted @ 2013-04-29 13:22 小天1981 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 主表 contracts(id,name,clientname,note…)从表 payments(id,contractid,amount,updated)adoquery1:select * from contracts;datasource1->adoquery1adoquery2:select * from payments;datasource2->adoquery2—————cxgrid建2个level,level2为level1的子level连接两个tableview,分别连接到datasource1,datasource2设置tableview1的keyfieldn 阅读全文
posted @ 2013-04-29 13:20 小天1981 阅读(626) 评论(0) 推荐(0) 编辑