随笔分类 - Delphi
java设置环境变量小工具
摘要:unit MainUnit;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry;type TfrmMain = ...
阅读全文
【转】Delphi利用系统环境变量获取常用系统目录
摘要:Delphi code//譬如 %WINDIR% 是表示系统目录的系统变量, 可以这样获取:var s: string;begin s := GetEnvironmentVariable('WINDIR'); ShowMessage(s); {C:\WINDOWS}end;一些系统目录变量列表...
阅读全文
[转]Delphi多线程编程入门(二)——通过调用API实现多线程
摘要:以下是一篇很值得看的关于Delphi多线程编程的文章,内容很全面,建议收藏。一、入门㈠、functionCreateThread(lpThreadAttributes:Pointer;{安全设置}dwStackSize:DWORD;{堆栈大小}lpStartAddress:TFNThreadStartRoutine;{入口函数}lpParameter:Pointer;{函数参数}dwCreationFlags:DWORD;{启动选项}varlpThreadId:DWORD{输出线程ID}):THandle;stdcall;{返回线程句柄}在 Windows 上建立一个线程, 离不开 Creat
阅读全文
[转]Delphi多线程编程入门(一)
摘要:最近Ken在比较系统地学习Delphi多线程编程方面的知识,在网络上查阅了很多资料。现在Ken将对这些资料进行整理和修改,以便收藏和分享。内容基本上是复制粘贴,拼拼凑凑,再加上一些修改而来。各个素材的来源已经很难搞清楚,因此不再一一说明。一些资料可能有点老,但仍然有参考价值。篇幅比较长,耐心点看完吧。多线程共存于应用程序中是现代操作系统中的基本特征和重要标志。为了提高程序的运行效率,在操作系统中提出了进程和线程的概念,在一个进程中可以包含多个线程,进程作为资源分配的基本单位,线程作为独立运行和独立调度的基本单位。关于多线程的更详细说明建议粗略地阅读下百度百科《多线程》。现在PC的硬件性能越来越
阅读全文
获取CPUID等
摘要:1 unit CommonUnit; 2 3 interface 4 5 uses 6 Windows, SysUtils, DateUtils; 7 8 Const 9 CPUVendorIDs: array [0 .. 5] of string = ('GenuineIntel', 'UMC UMC UMC', 10 'AuthenticAMD', 'CyrixInstead', 'NexGenDriven', 'CentaurHauls'); 11 // 将CPU厂家信息转换成字串形式 12
阅读全文
读取软件卸载信息和桌面图标列表
摘要:1 unit Main; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 Dialogs, Registry, StdCtrls, ComCtrls, IOUtils, Types; 8 9 type 10 TForm2 = class(TForm) 11 pgc1: TPageControl; 12 ts1: TTabSheet; 13 lst1: TListBox; 14 ...
阅读全文
背包公钥系统
摘要:unit public_key; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; Label1: TLabel; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Edit...
阅读全文
在 Delphi 中判断一个字符是中文的方法
摘要://判断字符是否是汉字function IsMBCSChar(const ch: Char): Boolean; begin Result := (ByteType(ch, 1) mbSingleByte); end; 注:只能判断AnsiString类型的参看StrUtils.ByteType函数引用http://www.cnblogs.com/myqiao/archive/2005/08/29/225527.html
阅读全文
delphi注册/反注册OCX
摘要:uses ShellAPI;function ExecAndWait(const ExecuteFile, ParamString : string): boolean;var SEInfo: TShellExecuteInfo; ExitCode: DWORD;begin FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Applicat...
阅读全文
delphi的字节对齐
摘要:如果不改编译选项Delphi的Record默认也是4字节对齐的.可以用编译开关指定{$A4+}就是4字节对齐.同理{$A2+}.{$A1+}等.{$A1+}等同于Packed Record主要容易被忽略的是Delphi的枚举.C,C++的枚举默认等同于整数.也就是4字节的.Delphi枚举默认是最小对齐.也就是除非指定枚举值,如果枚举小于255个就一个字节.大于255小于65535就两个字节等.可以用{$Z4+}这个编译开关把枚举强制按4字节对齐.在结构体中,成员数据对齐满足以下规则: a、结构体中的第一个成员的首地址也即是结构体变量的首地址。 b、结构体中的每一个成员的首地址相对于结构体的首
阅读全文
枚举与字符串转及RecordSet转XML,JSON
摘要:functionAdoToJs(ado:TADOQuery):string;varI,J:Integer;json:string;beginjson:='{columns:[';forI:=0toado.FieldCount-1dobeginjson:=json+'{name:"'+ado.Fields[I].FieldName+'",type:"'+DbTypeToStr(ado.Fields[I].DataType)+'"}';ifI<ado.FieldCount-1thenjso
阅读全文
TidHttpServer 使用示例
摘要:unitMain;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,ActnList,StdCtrls,IdComponent,IdTCPServer,IdHTTPServer,Buttons,ComCtrls,IdGlobal,IdBaseComponent,IdThreadMgr,IdThreadMgrDefault,syncobjs,IdThreadMgrPool,ExtCtrls,IdIntercept,IdSSLOpenSSL,IdIOHandlerSocket,IdServe
阅读全文
关于使用类成员函数作为回调的方法
摘要:为什么类成员函数不能直接做为回调函数?因为windows中,回调函数都是显式使用CALLBACk修饰符修饰,也就是_stdcall参数传递方式。_stdcall修饰的函数,参数从右至左依次压入堆栈,被调用者负责平衡堆栈。而所有类的成员函数在定义的时候都被隐式(implicit)定义为__thiscall参数传递方式。__thiscall 修饰的函数参数从右至左依次压入堆栈,被调用者负责平衡堆栈。与所有参数传递方式均不相同的一点:成员函数所在类的this指针被存入ecx寄存器(这个特性只针对Intel x86架构)。如何让类成员函数成为回调函数根据第一节对回调函数与类成员函数各自特点的分析。不难
阅读全文
获取网络图片缓存的地址
摘要:uses WinINet;Function TForm1.GetCacheVerifyCodeFile(VerifyCodeURL:String; Var CacheVerifyCodeFile:String):Boolean;VarlpEntryInfo: PInternetCacheEntryInfo;dwEntrySize, dwLastError, Hwd: LongWORD; i, j:...
阅读全文
HOOK相关
摘要:有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的HTTP头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能,还是我们自己动手来DIY吧.拦截网络数据封包的方法有三种,一是将网卡设为混杂模式,这次就可以监视到局域网上所有的数据包,二是HOOK目标进程的发送和接收的API函数,第三种方法是...
阅读全文
(转)Delphi读写UTF-8、Unicode格式文本文件
摘要:在研究PvPGN时发现conf配置文件一些为UTF-8和Unicode格式,这样便可良好的支持多语言,从网上查阅资料后,将读写UTF-8、Unicode文件写了几个最精简的函数,更新后加了是否写文件头的功能,以适应更多需要,注意函数未加防错保护。 参数说明:f文件名、s写入或读取的文件内容、hs文件头、b是否读写文件头。 UTF-8文件写入函数 程序代码 程序代码 procedureSav...
阅读全文
[转]如何用Delphi开发网游外挂
摘要:1、动作式,所谓动作式,就是指用API发命令给窗口或API控制鼠标、键盘等,使游戏里的人物进行流动或者攻击,最早以前的“石器”外挂就是这种方式。 2、本地修改式,这种外挂跟传统上的一些游戏修改器没有两样,做这种外挂在编程只需要对内存地址有一点认识并且掌握API就可以实现,“精灵”的外挂这是这种方式写成的,它的难点在于找到那些地址码,找地址一般地要借助于别人的工具,有的游戏还有双码校验,正正找起来会...
阅读全文
[转]计算两点间的角度
摘要:/// /// 计算两点间的角度 /// /// 原点坐标 /// 参考点坐标 /// 离心率 /// 返回两点间的角度 private double PointToAngle(Point AOrigin, Point APoint, double AEccentricity) { if (APoint.X == AOrigin.X) if (APoint.Y > ...
阅读全文
[转]快速寻找子位图的位置
摘要:转自:http://blog.sina.com.cn/s/blog_589d32f5010008m9.html function FindBitmapPoint( //寻找子位图的位置 mBitmapMain: TBitmap; //主位图 mBitmapSub: TBitmap //子位图 ): TPoint; //返回子图像存在的坐标,如不存在则返回(-1,-1) //设计 ...
阅读全文
钩子技术
摘要:你创建一个钩子时,WINDOWS系统会创建一个数据结构,该结构包含了您创建的钩子的信息,安装钩子则是把该结构体插入到系统钩子列表中去,注意:新插入的放置到旧的前面。当指定的钩子事件被触发后,局部钩子只需要调用进程中的钩子函数来预处理事件,全局钩子则需要把处理插入到其他地址空间,要做到这一点,就需要有一个动态连接库,把钩子函数放到库中。但有两个是例外,就是日志钩子和日志回放钩子,它是一种比较特殊的钩...
阅读全文
浙公网安备 33010602011771号