
Delphi
五维思考
善作者不必善成,善始者不必善终!
展开
-
调用C语言编写的DLL文件
1、 使用Visual C++ 6.0编写和链接DLL打开Visual C++ 6.0集成开发环境,新建一个Win32 Dynamic-Link Library类型的工程CDLL,在工程中新建一个C语言源文件cdll.c。源文件中的内容如下:__declspec(dllexport) int max(int x,int y) /* 比较两个整型变量大小的函数max */{ if原创 2009-12-11 15:18:00 · 2745 阅读 · 0 评论 -
Delphi的原子世界
DELPHI的原子世界在使用Delphi开发软件的过程中,我们就像草原上一群快乐牛羊,无忧无虑地享受着Object Pascal语言为我们带来的阳光和各种VCL控件提供的丰富的水草。抬头望望无边无际蔚蓝的天空,低头品尝大地上茂密的青草,谁会去想宇宙有多大,比分子和原子更小的东西是什么?那是哲学家的事。而哲学家此时正坐在高高的山顶上,仰望宇宙星云变换,凝视地上小虫的爬行,蓦然回头,对我们这群吃草转载 2008-10-11 13:12:00 · 1176 阅读 · 0 评论 -
获取进程列表、名称、路径
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, TLHelp32, psapi;type TForm1 = class(TForm) Button1:原创 2008-10-08 20:19:00 · 2478 阅读 · 0 评论 -
RichEdit控件 SDK 参考手册
RichEdit控件 SDK 参考手册 摘要: 本文对Rich Edit控件底层消息机制进行了讲解,以期读者对Windows平台下的Rich Edit控件有一个更深入的认识,同时对于使用Win32 SDK进行开发的人员具有一定参考价值。因为文章的初衷是引领VB程序员通过Win32 API调用来扩展VB下的Rich Edit控件的功能,所以对于每个消息的详细说明和注意事项未作过多说明,感兴趣转载 2008-10-23 22:30:00 · 2896 阅读 · 1 评论 -
在DBGRID里添加行序号
// 1. create new blank field in dbgrid // 2. rename the title with No // 3. put this code in OnDrawColumncell // 4. Now your Grid has a row number procedure TForm1.DBGrid1DrawColum原创 2008-10-08 08:50:00 · 3621 阅读 · 0 评论 -
向指定HWND发送字符串
procedure SendKeys(focushld: hwnd; sSend: string);var i: integer; ch: byte;begin if focushld = 0 then Exit; i := 1; while i do begin ch := byte(sSend[i]); if Win原创 2008-10-04 14:57:00 · 1107 阅读 · 0 评论 -
判断中英文的函数
function ByteType(const S: string; Index: Integer): TMbcsByteType; 函数返回值可以判断一个字符串中,某个Char是单个字母,还是双字节的前一位或后一位。 返回值: mbSingleByte 单字母 mbLeadByte 双字节第一位 mbTrailByte 双字节第二位 proced原创 2008-10-03 18:20:00 · 1517 阅读 · 0 评论 -
关于钩子函数的讲解
这是win32汇编语言中关于钩子函数的讲解,是丛windows的底层讲的,对于c,vb,delphi语言,原理都相同,只是语法的问题。 WINDOWS钩子函数 本文中我们将要学习WINDOWS钩子函数的使用方法。WINDOWS钩子函数的功能非常强大,有了它您可以探测其它进程并且改变其它进程的行为。 理论: WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一。利用它们,您可转载 2008-10-03 16:44:00 · 1392 阅读 · 0 评论 -
Delphi中array of const应用
Delphi的Format函数大家都用得很多,第二个参数用着确实很方便。最近在数据库开发应用中需要自己创建一个带array of const参数的函数,对于常用的类型String,Integer,Pointer处理都没什么问题,但当用到Widestring类型时却出错,摸索了一上午,感觉获益良多。现在将问题、解决问题的思路、分析方法等一一道来,希望对诸君有所启发就达到了我写这篇文章的目的了!转载 2008-10-05 14:21:00 · 3162 阅读 · 0 评论 -
利用ITaskbarList接口隐藏任务栏图标
其实只用一个API函数就能实现:ShowWindow(Application.Handle,SW_HIDE),今天看到另一种方法,利用ITaskbarList接口隐藏任务栏图标,缺点是ALT+TAB或最小化后又显示出来了,但这个方法可以引伸出其它应用。 //uses ActiveX type ITaskbarList = interface(IUnknown)转载 2008-10-28 20:57:00 · 3868 阅读 · 0 评论 -
Delphi操作Excel大全
Delphi 控制Excel(一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObject( Excel.Application );1) 显示当前窗口:ExcelApp.Visible := True;2) 更改 Excel 标题栏:ExcelApp.Caption := 应用程序转载 2008-10-13 11:13:00 · 1372 阅读 · 2 评论 -
探索Delphi类与对象的内存结构
探索Delphi类与对象的内存结构 初次接触DELPHI对它提供的RAD快速编程模式颇感神奇,随手拖放及格控件设定些属性一个应用程序就诞生了,我正是被这种特性所吸引。随着深入转载 2008-10-11 13:32:00 · 1361 阅读 · 0 评论 -
delphi获取汉字拼音首字母
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEd转载 2009-08-01 20:59:00 · 4158 阅读 · 1 评论 -
Delphi外挂制作
在几年前我看到别人玩网络游戏用上了外挂,做为程序员的我心里实在是不爽,想搞清楚这到底是怎么回事。就拿了一些来研究,小有心得,拿出来与大家共享,外挂无非就是分几种罢了(依制作难度):1、动作式,所谓动作式,就是指用API发命令给窗口或API控制鼠标、键盘等,使游戏里的人物进行流动或者攻击,最早以前的“石器”外挂就是这种方式。2、本地修改式,这种外挂跟传统上的一些游戏修改器没有两样,做这种外挂在编程只转载 2009-04-19 13:53:00 · 1386 阅读 · 0 评论 -
扫雷外挂的设计与实现
其实我不玩网络游戏的,所以对于外挂类程序也没什么好或坏的感觉,甚至平时基本不会想到这个概念。这个实验项目一开始称为“扫雷助手”,而究其技术含量,与现在真正实用的游戏外挂程序也没有可比性。设计它的意义,无非在于对某些Windows API的的进一步熟悉,使从未涉足过此领域的新手(当初的我自己)能够揭开某些“神秘的面纱”。之所以选择“扫雷”这个最经典的小游戏进行hack,一方面,使这个项目更贴近生活,转载 2009-04-19 14:18:00 · 4129 阅读 · 0 评论 -
通过数据表动态建Treeview,绝对高效率!
/*1。数据库表的结构: ( 节点ID 节点父ID(PID) 及其他字段 ) ID,PID的类型无所谓,数字,字符都行,也不需要有规律, 只要保证ID字段为主键即可,比如可以用GUID 来作ID。 支持无限级。2。TTreeNode的Data指向一个结构,结构内有一个域记录节点的ID及PID,转载 2009-03-09 15:29:00 · 1798 阅读 · 0 评论 -
给TreeView添加复选框
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;type TForm1 = class(TForm) TreeView1: TTreeVie原创 2009-03-03 16:57:00 · 2213 阅读 · 0 评论 -
Delphi字符串函数大全
【字符串函数大全】 uses StrUtils; 首部 function AnsiResemblesText(const AText, AOther: string): Boolean; $[StrUtils.pas 功能 返回两个字符串是否相似 说明 ANSI(American National Standards Institute)美国国家标准协会;不区分大小写 参考 functio转载 2009-03-03 15:57:00 · 681 阅读 · 0 评论 -
ListView列宽改变时的消息响应
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls,CommCtrl;type PHD_NOTIFY=^HD_NOTIFY; TForm1 = cl原创 2009-02-10 22:49:00 · 2129 阅读 · 4 评论 -
Delphi写Sql2000扩展存储过程的例子
Delphi写Sql2000扩展存储过程的例子library project1;uses Windows, SysUtils, MSODSApi;...{$R *.res}Function GetParamStr(pSrvProc: SRV_PROC; Index : integer; Var Param : String ) : integer;转载 2008-10-11 22:00:00 · 1561 阅读 · 2 评论 -
Windows消息
Windows消息汇总WM_NULL = $0000; WM_CREATE = $0001; 应用程序创建一个窗口 WM_DESTROY = $0002; 一个窗口被销毁 WM_MOVE = $0003; 移动一个窗口 WM_SIZE = $0005; 改变一个窗口的大小 WM_ACTIVATE = $0006; 一个窗口被激活或失去激活状态; WM_SETFOCUS = $0007; 获得焦转载 2008-10-03 16:47:00 · 721 阅读 · 1 评论 -
Delphi - 关于钩子函数HOOK (二)
用DELPHI编制钩子函数Windows消息管理机构提供了能使应用程序访问控制消息流所谓的钩子(HOOK)机制。钩子有多种,分别用于捕获某一特定类型或某一范围的消息。如:键盘消息,鼠标消息等。我们这里仅以键盘钩子的使用为例,讨论在DELPHI下怎样编写DLL程序和怎样在自己的程序中安装使用键盘钩子函数,并讨论了不同程序使用同一DLL文件时怎样共享数据。一、 钩子过滤函数的编写说明由于钩子过滤函数必转载 2008-10-03 16:39:00 · 1261 阅读 · 0 评论 -
利用内存映射文件在两个进程间共享数据
private hMapFile: THandle; MapFilePointer: Pointer; public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sende转载 2008-10-03 13:04:00 · 1995 阅读 · 0 评论 -
从内存中加载并运行exe
{配合anskya的AnyWhereFileToPas效果不错}{ ******************************************************* }{ * 从内存中加载并运行exe * }{ ***********************************************转载 2008-10-02 14:42:00 · 2053 阅读 · 0 评论 -
小写金额转换为大写
function MoneyToUpper(const NumBer: Double): string;var StrNumber, AUpperNum, AMoneyUnit: string; UpperNum: array[0..9] of string; MoneyUnit: array[1..16] of string; I: Integer; AZer转载 2008-10-15 19:30:00 · 921 阅读 · 0 评论 -
文件(夹)复制、删除、重命名
//------------------------------------------------------------------------------ // 删除目录 //------------------------------------------------------------------------------ function DelDirect原创 2008-10-15 22:46:00 · 1498 阅读 · 0 评论 -
Delphi编写windows外壳扩展
Delphi编写windows外壳扩展 对于操作系统原理比较了解的朋友都会知道,一个完备的操作系统都会提供了一个外壳(shell),以方便普通的用户使用操作系统提供的各种功能。windows(在这里指的是windows 95/windows nt4.0以上版本的操作系统)的外壳不但提供了方便美观的gui图形界面,而且还提供了强大的外壳扩展功能,大家可能在很多软件中看到这些外壳扩展了。转载 2008-10-17 12:18:00 · 1261 阅读 · 0 评论 -
字符串排序等算法
15,1,5,10,13,14,50,4,55,8,67,68,69,3,12,57,70,74 字符串,排序后再把连续数字用-连接在一起,结果为:1,3-5,8,10,12-15,50,55,57,67-70,74function NumberSort(List: TStringList; Index1, Index2: Integer): Integer;转载 2008-09-25 14:13:00 · 1253 阅读 · 0 评论 -
GDI+用PNG图片做半透明异型窗口
{*******************************************************}{ }{ GDI+用PNG图片做半透明异型窗口 }{原创 2008-09-11 08:23:00 · 4412 阅读 · 0 评论 -
浅谈Delphi中进程间的数据共享
DLL是创建Windows应用程序,实现代码重用的重要手段。那么当我们需要在进程间共享数据时,怎样做才能快捷方便地实现呢?在32位应用系统中,每个应用程序会将DLL映射到自己的地址空间,同时DLL中的数据也就随之被映射了。这样,每个应用程序都有自己的数据实例,在一个应用程序中修改DLL中的全局变量,不会影响其它的应用程序。DLL的使用似乎与我们的目的相背离,那么如何才能实现我们想要的东东呢?这转载 2008-10-03 13:20:00 · 878 阅读 · 0 评论 -
用跨进程子类化技术实现对其它进程消息的拦载
大家都知道每个窗口都有默认的窗口函数来进行对窗口消息的处理. 而子类化技术就是替换窗口的窗口函数为自己定义的函数的技术.例如下面的代码:var Form1: TForm1; OldWndProc: Pointer;implementation{$R *.dfm}function NewWndProc(hHwnd, Msg, wParam, lParam: LongWORD): Lon转载 2008-10-03 13:25:00 · 1246 阅读 · 0 评论 -
检测隐藏进程
许多用户都有过用Windows自带的任务管理器查看所有进程的经验,并且很多人都认为在任务管理器中隐藏进程是不可能的。而实际上,进程隐藏是再简单不过的事情了。有许多可用的方法和参考源码可以达到进程隐藏的目的。令我惊奇的是只有很少一部分的木马使用了这种技术。估计1000个木马中仅有1个是进程隐藏的。我认为木马的作者太懒了,因为隐藏进程需要进行的额外工作仅仅是对源代码的拷贝-粘贴。所以我们应该期待即将到转载 2008-10-15 13:11:00 · 5622 阅读 · 2 评论 -
Delphi - 关于钩子函数HOOK (一)
基本概念钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先转载 2008-10-03 16:37:00 · 1240 阅读 · 0 评论 -
Delphi 正则表达式起步
在 Delphi 中使用正则表达式, 目前 PerlRegEx 应该是首选, 准备彻底而细致地研究它.官方网站: http://www.regular-expressions.info/delphi.html直接下载: http://www.regular-expressions.info/download/TPerlRegEx.zip安装方法:1、先把解压的 TPerlRegE转载 2008-10-07 00:09:00 · 3199 阅读 · 0 评论 -
DLL函数写法 让我很受教育
通常我会这样写:function Test(Str,RValue: PChar): Integer; stdcall;var S:String; begin S:=This is Test+Str; StrPCopy(RValue,S); Result:= Length(S); end; 今天看了优快云上叫僵哥的一番话,很受教育,如下:原创 2008-10-07 20:18:00 · 1158 阅读 · 0 评论 -
Delphi 正则表达式(TRegExpr)
首先介绍的是这个单元的主角:TRegExpr类,这个类包括很多成员,这里仅简单的介绍一下一般匹配的过程。下面是一段在文本中提取邮件地址的代码:Procedure GetName(TextToCheck:String;aList:TStringList);VarmyExpr: TRegExpr;beginmyExpr := TRegExpr.Create;TrymyExpr.Expressi转载 2008-10-06 23:45:00 · 3823 阅读 · 1 评论 -
实现自动按键的方法 驱动级模拟(硬件模拟)
有些游戏直接用au3里面的模拟点击/按键都是无效的,包括qq2007也是无法实现,下面是一个解决方法,具体实现方法(vb的),想改成au3的,还没成功,有兴趣的朋友也来试试.驱动级模拟 如果上面的方法你都试过了,可是你发现目标程序却仍然顽固的不接受你模拟的消息,寒~~~~~~~~~还好,我还剩下最后一招,这就是驱动级模拟:直接读写键盘的硬件端口! 有一些使用DirectX接口的转载 2008-10-06 21:35:00 · 10622 阅读 · 3 评论 -
Delphi2009新特性的介绍
集中在Unicode,以及一些新的URL上,我试图从一些不同的角度察看一下Delphi2009都有些什么东西.IDE:粗看起来Delphi2009的IDE较之Delphi2007并没有什么特别的增强。主要的UI元素也没有大的变化。最显著的变化就是Project Manager和Tool Palette。Class Explorer只是针对本工程的,并不会随着Editor中文件的变化而变化,新增的V转载 2008-10-04 09:14:00 · 2895 阅读 · 1 评论 -
字符串与16进制互转
//字符串转为16进制 function StrToHex(AStr: String): String;var i : Integer;begin Result := ; for i := 1 to Length(AStr) do Result := Result + IntToHex(ord(AStr[i]), 2);end;//16进原创 2008-09-25 11:37:00 · 1103 阅读 · 0 评论 -
让BDS2007(Delphi2007&C++Builder2007)编译出一个个性的文件名,而不是以Project的名称来命名
在BDS2007当中调用的是MSBuild来完成最终的编译,而其实MSBuild支持来指定文件名,但是BDS2007却对它“视而不见”,虽然你可以手工去编辑Delphi/CB的project源文件,来指定一个,但是编译是可以生成一个际定的文件名,却无法在IDE当中通过Run或F9来执行,并且也无法在IDE当中完成改名。不过,很有意思的是,在工程选项的Application当中,却可以指定文件的转载 2008-10-17 19:31:00 · 1041 阅读 · 0 评论