| 订阅 | 在线投稿
分享
 
 
当前位置: 王朝网络 >> delphi >> DELPHI的一些开发技巧和方法(二)
 

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

2007-06-23 04:20:04 编辑來源:互联网 繁體版 评论
 
 
  作者 : 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实现文件加密压缩》
下一篇《Delphi中使用ListView和TreeView的Item中的Data可能被忽略的内存泄漏》
 
 
 
 
 
 
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

我就是扫描下图得到了敬业福和爱国福

先来看下敬业福和爱国福 今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。 今天该活动正式启动,和去年一样,需要收集“五福”...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

 
 
 
作者 : 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
󰈣󰈤
 
 
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
情人节的清纯女生(9)
情人节的清纯女生(8)
情人节的清纯女生(7)
情人节的清纯女生(6)
山东蓬莱海边组照
一探哲蚌 II
一探哲蚌 III
古长城的一角
 
>>返回首页<<
 
 
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 热帖排行
 
 
 
 
©2005- 王朝网络 版权所有