DELPHI的一些开发技巧和方法(二)

作者 : toofree

标题 : DELPHI的一些开发技巧和方法(二)

关键字: DELPHI 开发技巧

分类 : 开发技巧

密级 : 参赛

(评分:★ , 回复: 3, 阅读: 1185)

11、向其他应用程序发送模拟键:

var

h: Thandle;

begin

h := FindWindow(nil, '应用程序标题');

PostMessage(h, WM_KEYDOWN, VK_F9, 0);//发送F9键

end

12、判断当前网络连接方式:

(判断结果为MODEM、局域网或是代理服务器方式)

uses wininet;

Function ConnectionKind :boolean;

var flags: dword;

begin

Result := InternetGetConnectedState(@flags, 0);

if Result then

begin

if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then

begin

showmessage('Modem');

end;

if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then

begin

showmessage('LAN');

end;

if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then

begin

showmessage('Proxy');

end;

if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then

begin

showmessage('Modem Busy');

end;

end;

end;

13、取机器BIOS信息:

with Memo1.Lines do

begin

Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061))));

Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091))));

Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5))));

Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71))));

end;

14、解析服务器IP地址:

uses winsock

function IPAddrToName(IPAddr : String): String;

var

SockAddrIn: TSockAddrIn;

HostEnt: PHostEnt;

WSAData: TWSAData;

begin

WSAStartup($101, WSAData);

SockAddrIn.sin_addr.s_addr:= inet_addr(Pchar(IPAddr));

HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);

if HostEnt<>nil then result:=StrPas(Hostent^.h_name) else result:='';

end;

15、清空一个目录:

function EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :

Boolean;

var

SearchRec : TSearchRec;

Res : Integer;

begin

Result := False;

TheDirectory := NormalDir(TheDirectory);

Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);

try

while Res = 0 do

begin

if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then

begin

if ((SearchRec.Attr and faDirectory) > 0) and Recursive

then begin

EmptyDirectory(TheDirectory + SearchRec.Name, True);

RemoveDirectory(Pchar(TheDirectory + SearchRec.Name));

end

else begin

DeleteFile(Pchar(TheDirectory + SearchRec.Name))

end;

end;

Res := FindNext(SearchRec);

end;

Result := True;

finally

FindClose(SearchRec.FindHandle);

end;

end;

16、计算目录的大小:

function GetDirectorySize(const Adirectory: string): Integer;

var

Dir: TSearchRec;

Ret: integer;

Path: string;

begin

Result := 0;

Path := ExtractFilePath(Adirectory);

Ret := Sysutils.FindFirst(Adirectory, faAnyFile, Dir);

if Ret <> NO_ERROR then exit;

try

while ret=NO_ERROR do

begin

inc(Result, Dir.Size);

if (Dir.Attr in [faDirectory]) and (Dir.Name[1] <> '.') then

Inc(Result, GetDirectorySize(Path + Dir.Name + '\*.*'));

Ret := Sysutils.FindNext(Dir);

end;

finally

Sysutils.FindClose(Dir);

end;

end;

17、获得硬盘序列号:

var SerialNum : pdword; a, b : dword; Buffer : array [0..255] of char;

begin

if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then Label1.Caption := IntToStr(SerialNum^);

end;

18、目录完全删除:

procedure Tform1.DeleteDirectory(strDir:String);

var

sr: TSearchRec;

FileAttrs: Integer;

strfilename:string;

strPth:string;

begin

strpth:=Getcurrentdir();

FileAttrs := faAnyFile;

if FindFirst(strpth+'\'+strdir+'\*.*', FileAttrs, sr) = 0 then

begin

if (sr.Attr and FileAttrs) = sr.Attr then

begin

strfilename:=sr.Name;

if fileexists(strpth+'\'+strdir+'\'+strfilename) then

deletefile(strpth+'\'+strdir+'\'+strfilename);

end;

while FindNext(sr) = 0 do

begin

if (sr.Attr and FileAttrs) = sr.Attr then

begin

strfilename:=sr.name;

if fileexists(strpth+'\'+strdir+'\'+strfilename) then

deletefile(strpth+'\'+strdir+'\'+strfilename);

end;

end;

FindClose(sr);

removedir(strpth+'\'+strdir);

end;

end;

19、TFileStream的操作:

//从文件流当前位置读count字节到缓冲区BUFFER

function read(var buffer;count:longint):longint;override;

//将缓冲区BUFFER读到文件流中

function write(const buffer;count:longint):longint;override;

//设置文件流当前读写指针为OFFSET

function seek(offset:longint;origin:word):longint;override;

origin={soFromBeginning,soFromCurrent,soFromEnd}

//从另一文件流中当前位置复制COUNT到当前文件流当前位置

function copyfrom(source:Tstream;count:longint):longint;

//读指定文件到文件流

var myFStream:TFileStream;

begin

myFStream:=TFileStream.create(OpenDialog1.filename,fmOpenRead);

end;

20、获得CPU序列号:

function GetCpuId:longint;assembler;register;

var

temp:longint;

begin

asm

PUSH EBX

PUSH EDI

MOV EDI,EAX

MOV EAX,1

DW $A20F

MOV TEMP,EDX

POP EDI

POP EBX

end;

result:=temp;

end;

procedure TForm1.Button1Click(Sender: Tobject);

begin

label1.Caption:=IntToHex(GetCpuId,8);

end;

2003-5-30 10:47:00

· 把年龄相仿的狮虎熊放一起,谁更厉害?结果出人意料

很多人都想知道狮子、老虎和熊打起来谁最厉害,于是便有好事之人把这三种动物关在一起...

· 湖北宜昌三峡坝区水面惊现神秘动物

近日,湖北宜昌,一段视频在当地热传:有网友在三峡坝区拍到神秘动物,体型硕大数米长...

· 什么是语段?语段的类型以及和句群、段落的区别与联系是什么?

句群是最高级的语言单位。 段落(自然段)是章法单位...

 
DELPHI基础开发技巧
◇网络邻居复制文件uses shellapi;copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false);◇产生鼠标拖动效果通过MouseMove事件、DragOver事件、EndDrag事件实现,例如在PANEL上的LABE...查看完整版>>DELPHI基础开发技巧
 
开发技巧:JAVA编程中字符串分割的两种方法
方法1:采用String的split,验证代码如下:import Java.util.Arrays;public class TestSplit { public static void main(String[] args) { String orignString = new String("5,8,7,4,3,9,1"); String[] testString ...查看完整版>>开发技巧:JAVA编程中字符串分割的两种方法
 
使用X458时的一些方法&技巧!!~
1:图片支持的格式有:BMP,JPG,GIF三种!~~~且大小要在128X128内(并小于32K:)铃声支持的格式有:.mmf,.mid两种!~~~其中“.mmf”的可以通过数据线配合EasyGPRS软件下载;“.mid”的只能通过手机上GPRS获得(并一...查看完整版>>使用X458时的一些方法&技巧!!~
 
Delphi开发经验技巧宝典(含光盘)|报价¥71.20|图书,计算机与互联网,程序设计,Delphi语言,高级编程,明日科技
目录:图书,计算机与互联网,程序设计,Delphi语言,高级编程,品牌:明日科技基本信息·出版社:人民邮电出版社·页码:753 页码·出版日:2007年·ISBN:9787115166807·条码:9787115166807·版次:2007年11月第1版·...查看完整版>>Delphi开发经验技巧宝典(含光盘)|报价¥71.20|图书,计算机与互联网,程序设计,Delphi语言,高级编程,明日科技
 
DELPHI开发技巧
先人的DELPHI基础开发技巧◇网络邻居复制文件uses shellapi;copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false);◇产生鼠标拖动效果通过MouseMove事件、DragOver事件、EndDrag事件...查看完整版>>DELPHI开发技巧