随笔分类 -  Delphi

HOOK启思录---第三章 HOOK的应用模式
摘要:观察模式在HOOK很多应用中,有一类应用最为常用,那就是观察模式。对于信息获取的要求,在很多时候都是非常的重要的功能。在很多时候,我们都需要根据一定量的信息去判断如何决策。正如打仗一样,没有一定量的有意义的数据,就是摸黑,只能死路一条。像Windows提供的SetWindowHook就是典型地为这类应用准备的。而且这也是最普遍的用法。这个模式的特点是,在事情发生的时候,发出一个通知信息。观察者只可以查看过程中的信息,根据自己关心的内容处理自己的业务,但是不可以更改原来的流程。如全局钩子中,经常使用的鼠标消息、键盘消息的监视等应用。金山词霸屏幕取词的功能是一个典型的应用(具体技术可以参考此类文章 阅读全文

posted @ 2011-12-26 17:06 Supper 阅读(376) 评论(0) 推荐(0)

HOOK启思录---第一章 HOOK的发展
摘要:非常遗憾,HOOK的发展史不是那么清晰可见。事实上,HOOK到底是什么,很多人的说法都不一样。最早是在操作系统中出现的HOOK概念。在Unix/Linux/Windows中都有类似概念。当时提出的目的在于,允许用户在系统调用过程中,插入自己的代码处理特殊事情。典型的HOOK就是用自己的功能替换原有的函数点,在处理完成之后,又恢复原有的函数点。(这里“点”就是表示一个可以使用HOOK勾住的位置)。下面是《关于钩子》中,描述的Windows是中的钩子:在Windows中,钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可 阅读全文

posted @ 2011-12-26 17:03 Supper 阅读(376) 评论(0) 推荐(0)

HOOK启思录---第二章 HOOK的根源
摘要:我一直在避免写HOOK的技术实现,想尽可能地将一些看不到的东西收集起来。相对于了解一个成熟的技术,还不如去了解其中的思想吧。我是这样认为的。这一章会暂时远离HOOK本身,我们会尝试着去思考这些技术出现的根源。很多人象我一样,从OP的衰败中走向OO的繁荣。软件的复杂度也是突飞猛进。当年“没有银弹”的断言,非常准确地说明了软件的发展趋势,当新技术发展的时候,软件的复杂度也随之发展。我们现在的软件,已经不再是OP时代的软件了。大家需要的不再是一段会计算的代码。大家需要图形界面,大家需要管理流程,大家需要信息共享!假设我们以前那些单一功能的软件都可以比喻成一条路的话。它非常简单,你只要考虑从A如何走到 阅读全文

posted @ 2011-12-26 16:59 Supper 阅读(232) 评论(0) 推荐(0)

HOOK启思录---前言:HOOK是一种思想
摘要:在很多人眼里,Hook都是高级程序员才会使用的技术。一年前,我也是。每每看到别人使用了Hook技术就很嫉妒。是的,说嫉妒一点都不夸张。刚开始,不知道Hook到底是什么技术。或者说,Hook到底是做什么的。Hook的英文是钩子,但是,说实话,我的中文意识中,怎么也不能将钩子和Hook划等同符号。一个钩子,它在等待我们去往上面挂上我们想要的东西。这点,从最终结果看。确实和这个技术很符合。可问题是,那些钩子在什么地方?我们家门口倒是有几个挂衣服的钩子,可是我要挂其他物件的钩子在哪里呢?最常听说的就是API HOOK了。有句话说得很有道理,HOOK API是一个永恒的话题。网络上,不知有多少人在追捧这 阅读全文

posted @ 2011-12-26 16:55 Supper 阅读(409) 评论(0) 推荐(0)

无标题窗体的移动及其简单美化
摘要:先看效果图吧。 最近做Web,发现网页三剑客总是会留下一些“最近打开项目”这样的痕迹在软件的界面上,心里总是觉得很不舒服,于是萌发了写一个清除器的念头。说动手就动手吧! DW、FW、Fl 的这些痕迹都是存在于注册表中的,简单原理就是删除注册表里的值就ok了,这些应该没有什么好说的,所以我就不说了。今天我们主要来讲一下无标题栏的窗体拖动问题和使用图片来简单的美化界面的问题。 可能有很多人都认为无标题栏窗体的移动是非常简单的,网上很多的朋友也给出了一些方法,大多说人给出的方法是在窗体的privite部分创建一个私有过程 procedure WMNCHitTest(var Msg: TWMNCHi. 阅读全文

posted @ 2011-11-22 12:26 Supper 阅读(2967) 评论(0) 推荐(3)

“58信息定时发布器” 编写纪要
摘要:1。数据库中随机抽取记录: try if AQry1.Active then AQry1.Close; AQry1.Open; //AQry.First; Randomize; AQry1.MoveBy(Random(AQry1.RecordCount - 1)); finally Str2 := AQry1.FieldByName('title').AsString; Str1 := AQry1.FieldByName('content').AsString; AQry1.Close; end;2。执行JS脚本的函数:function ExecJS(WebBr 阅读全文

posted @ 2011-08-17 16:04 Supper 阅读(661) 评论(0) 推荐(0)

Delphi下获取系统默认的UserAgent的方法
摘要:/// summary /// 获取系统默认的UserAgent /// uses SHDocVw, MSHTML; /// /summary function GetUserAgent: string; var Doc: IHTMLDocument2; win: IHTMLWindow2; wb: TWebBrowser; begin Result := ''; try wb := TWebBrowser.Create(nil); try wb.Navigate('about:blank'); while not wb.ReadyState = READYSTATE 阅读全文

posted @ 2010-12-30 03:06 Supper 阅读(1962) 评论(0) 推荐(0)

【转载】Delphi异常处理try except语句和try finally语句用法以及区别
摘要:Delphi异常处理try except语句和try finally语句用法以及区别 一直写程序都没管他们,也尽量很少用,今天终于想把他给弄个明白,在网上找来,记下!主要是前面小部分,后面的是详细说明(很啰嗦!)一、异常的来源  在Delphi的应用程序中,下列的情况都比较有可能产生异常。    (1)文件处理    (2)内存分配    (3)Windows资源   (4)运行时创建对象和窗体    (5)硬件和操作系统冲突     二、异常的处理  (1)try…except…end;    在try体内的代码发生异常时,系统将转向except部分进行异常的处理。这是Delphi处理异常的 阅读全文

posted @ 2010-12-30 02:24 Supper 阅读(34869) 评论(0) 推荐(1)

【不错的文章收藏了】我的Delphi开发经验谈
摘要:我的Delphi开发经验谈--------开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件。安装好Delphi 7后,应立即安装Delphi 7 Update Pack 1,Delphi 2007则建议尽量安装最新的版本。工欲善其事,必先利其器,为了提升开发效率,为了能更加得心应手的处理接下来的开发工作,我们有必要安装一些有用的开发辅助工具(Delphi将此类插件以Expert命名)。首先推荐的是DelForExp这个源代码格式化工具,集成在IDE里,使用相当方便。即使 阅读全文

posted @ 2010-12-30 02:19 Supper 阅读(602) 评论(0) 推荐(0)

【转载】ACCESS技巧集(DELPHI AND SQL)
摘要:1.Delphi中操作Access数据库(建立.mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在WIN98第二版无ACCESS环境下运行成功.//在之前uses ComObj,ActiveX//声明连接字符串Const SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;' +'Jet OLEDB:Database Password=%s;';//============================================================ 阅读全文

posted @ 2010-12-30 02:16 Supper 阅读(967) 评论(0) 推荐(0)

Delphi之TStrings和TStringLists类
摘要:Delphi之TStrings和TStringLists类 有些类不是组件,但它们支持存在的组件。这些类是其他组件的典型属性,直接由TPersistent派生,如TStrings、TCanvas和TCollection。 TStrings和TStringLists类 TStrings是一个抽象类,使你可以操纵属于组件(如TListBox)的字符串列表。TStrings实际上并不管理字符串的内存(那是由拥有TStrings类的组件管理的),它只是定义了方法和属性来访问和操纵组件的字符串,而不是使用组件的Win32 API函数和消息。 注意,我们所说的TStrings是一个抽象类。这就意味着T 阅读全文

posted @ 2010-12-27 05:11 Supper 阅读(13814) 评论(0) 推荐(0)

Delphi之TComponent类
摘要:TComponent类TComponent类直接由TPersistent派生。TComponent的独特特征是它的属性能够在设计期间通过ObjectInspector来控制,能够拥有其他组件。非可视组件也是从TComponent派生的,因此它们也继承了在设计期间可以被控制的能力。TComponent派生的非可视对象的典型例子是TTimer组件。TTimer组件是不可视组件,但它仍可以在组件面板上得到。TComponent定义了几个重要的属性和方法,在随后的段落中将加以描述。1.TComponent的属性:Owner:组件的拥有者ComponentCount:组件所拥有的组件数目Componen 阅读全文

posted @ 2010-12-27 01:18 Supper 阅读(9837) 评论(0) 推荐(1)

Delphi之TPersistent类
摘要:TPersistent类 TPersistent类是由TObject直接派生的。凡是由TPersistent派生的对象都能够进行流操作。因为所有的组件都是由TPersistent派生的,所以它们都具有流属性。TPersistent没有定义特殊的属性或事件,虽然它定义了一些对于组件用户和编写者有用的方法。下面列举了TPersistent类定义的一些方法。TPersistent类的方法: Assign() 这个公用方法允许一个组件把与另一个组件相关的数据赋给自己。 AssignTo() 这是个私有方法,TPersistent派生类必须实现它的定义。当这个方法被调用时,TPersistent将自 阅读全文

posted @ 2010-12-27 00:06 Supper 阅读(4204) 评论(0) 推荐(0)

TObject的create和destroy
摘要:TObject的Create()方法和Destroy()方法负责给对象实例分配和释放内存。实际上,TObject.Create()构造器返回对新创建对象的引用。TObject有几个函数,它们返回指定对象的有用信息。建议:使用TObject.Free而不是TObject.Destroy。free方法在调用Destory之前,检查对象是否是nil.这个方法确保不会因为试图释放一个非法对象而引发异常。 阅读全文

posted @ 2010-12-26 23:50 Supper 阅读(309) 评论(0) 推荐(0)

Synchronize()是如何工作的
摘要:你或许已把Synchronize()当成一个黑匣子,不清楚它是如何工作的。如果愿意揭开这个谜,请看下面。 当你在程序中第一次创建一个附属线程时,VCL将会从主线程环境中创建和维护一个隐含的线程窗口。此窗口唯一的目的是把通过Synchronize()调用的方法排队。Synchronize()把由Method参数传递过来的方法保存在TThread的FMethod字段中,然后,给线程窗口发一个CM_EXECPROC消息,并且把消息的lParam参数设为self(这里指线程对象)。当线程窗口的窗口过程收到这个消息后,它就调用FMethod字段所指定的方法。由于线程窗口是在主线程内创建的,线程窗口的窗口 阅读全文

posted @ 2010-12-13 18:25 Supper 阅读(417) 评论(0) 推荐(0)

Delphi之多线程实例
摘要:其他的我也就不多说了,说也说不好,再说这个东东因为暂时没有完全搞懂所以也不好说!之就给代码吧program TestThread;uses Forms, Main in 'Main.pas' {Form1}, TstThrd in 'TstThrd.pas';{$R *.res}begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;end.===============工程文件结束===============unit Main;interfaceuses Windows, Me 阅读全文

posted @ 2010-12-13 17:18 Supper 阅读(7495) 评论(0) 推荐(0)

备忘录(1):Delphi之接口
摘要:接口 对于Object Pascal语言来说,最近一段时间最有意义的改进就是从Delphi3开始支持接口(interface),接口定义了能够与一个对象进行交互操作的一组过程和函数。对一个接口进行定义包含两个方面的内容,一方面是实现这个接口,另一方面是定义接口的客户。一个类能实现多个接口,即提供多个让客户用来控制对象的“表现方式”。 正如名字所表现的,一个接口就是对象和客户通信的接口。这个概念像C++中的PUREVIRTUAL类。实现接口的函数和过程是支持这个接口的类的工作。 在这里你将学到接口的语言元素,要想在应用程序中使用接口,请参考COM和ActiveX方面的资料; 1.定义接口 就像所 阅读全文

posted @ 2010-12-05 03:37 Supper 阅读(1351) 评论(0) 推荐(0)

递归的一般方法
摘要:递归,编程的时候时常会遇到,所以很多时候,我都在想能不能把递归搞成一个公式一样的东西。功夫不负有心人,在查阅了相关书籍,回想高中数学,加上我的体会,中得到了一个公式一样的东西,应该确定的说是一般的思路:1。考虑特殊情况。记得高中学习数列的时候,时常先考虑n=1这个特殊情况,嘎嘎~~2。观察倒数第二步的情况。数学里,我们时常会考虑n-1的情况。3。最后一步与倒数第二步之间的关系。利用n-1来求解n,... 阅读全文

posted @ 2010-11-23 20:22 Supper 阅读(434) 评论(2) 推荐(0)

TMS IntraWeb Component Pack Pro v4.3.1.0
摘要:tzengwei(156994720)14:19:53TMSIntraWebComponentPackProv4.3.1.0http://hotfile.com/dl/76918105/186880a/IW_Component_Pack_Pro_4.3.1.0.zip.htmltzengwei(156994720)14:20:12TMSIntraWebPlanner2.5.5.0http://ho... 阅读全文

posted @ 2010-10-19 14:22 Supper 阅读(1252) 评论(0) 推荐(0)

偶也来模拟Delphi登陆网页
摘要:这篇文章也不算是原创,毕竟参考了某位大牛代码,好了废话不说了直接代码了:登录前:登陆后:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, UIWebBrowser, MSHtml, StdCtr... 阅读全文

posted @ 2010-10-11 00:40 Supper 阅读(3662) 评论(0) 推荐(0)

导航