我的学习生涯(Delphi篇) - 16

来源:互联网 发布:网络消费者投诉电话 编辑:程序博客网 时间:2024/04/30 07:10

    我们不断的在与Windows系统打交道,那么我们怎么获取相关的信息呢?

    -------------------------------------------------------------------------------------------------美丽分割线---------------------------

    年代:2007

    文件:My0312.7z


    程序效果如下:

    

    

   单元文件

   Unit1.pas

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, StrUtils;type  TForm1 = class(TForm)    Button1: TButton;    Button2: TButton;    Button3: TButton;    Button4: TButton;    Memo1: TMemo;    Button5: TButton;    Button6: TButton;    Button7: TButton;    Button8: TButton;    Edit1: TEdit;    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);    procedure Button3Click(Sender: TObject);    procedure Button4Click(Sender: TObject);    procedure Button5Click(Sender: TObject);    procedure Button6Click(Sender: TObject);    procedure Button7Click(Sender: TObject);    procedure Button8Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var  x:DWORD;begin  x:=$ff000000;  ShowMessage(format('移位前:%.8x',[x]));  asm    mov eax,x    shr eax,8    mov x,eax  end;  ShowMessage(format('移位后:%.8x',[x]));end;procedure TForm1.Button2Click(Sender: TObject);var  gle1:Byte;  msgBuf1:array [0..255] of char;  fh1:THandle;  //  lpv1,res1:Pointer;  function MakeLangID(PrimaryLanguage,SubLanguage : word) : DWord;  begin    Result:=SubLanguage shl 10;    Result:=Result or PrimaryLanguage;  end;begin//  fh1:= FileOpen('d:\新建 文本文档.txt',fmOpenRead);  //FileRead(fh1,buffer1,so1);  //ReadFile(fh1,buffer1,so1,so1,@gle1);  res1 :=VirtualAlloc(lpv1,4096,PAGE_EXECUTE_READWRITE,0);  gle1:= GetLastError;  ShowMessage(SysErrorMessage(gle1));  ShowMessage(IntToStr(gle1));  FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,nil,gle1,MakeLangID(LANG_NEUTRAL,SUBLANG_DEFAULT),                @msgbuf1,                sizeof(msgBuf1)-1,                nil);  MessageBox(0,msgbuf1,nil,MB_OK or MB_ICONINFORMATION);  //  CloseHandle(fh1);end;procedure TForm1.Button3Click(Sender: TObject);var  szExePathname:array [0..266]of char;  hMoudleA:DWORD;begin  hMoudleA:=GetModuleHandle(nil);  GetModuleFileName(hMoudleA,szExePathname,MAX_PATH);  ShowMessage(string(szExePathname));end;procedure TForm1.Button4Click(Sender: TObject);var  F:TFilestream ;  buf:PChar;begin  try    F := TFileStream.Create('C:\s\datasb.txt',fmShareDenyWrite);    F.Position := 0 ;    GetMem(Buf,F.size);    ShowMessage(IntToStr(F.Read(buf^,F.Size)));    //F.Read(buf^,F.Size);    ShowMessage(buf);    //Memo1.Lines.Add(buf);  finally    FreeMem(buf);    F.Free ;  end;end;procedure TForm1.Button5Click(Sender: TObject);var  Reader : TReader;  Writer : TWriter;  mStream : TMemoryStream;  n      : Integer;  str    : string;begin  n := 100;  str := 'abcde';  mStream := TMemoryStream.Create();  Writer := TWriter.Create(mStream,4096);  Writer.WriteInteger(n);  Writer.WriteString(str);  Writer.Free;  Reader := TReader.Create(mStream,4096);  mStream.Position := 0;  n := Reader.ReadInteger;  str := Reader.ReadString;  ShowMessage(Format('n=%d'+#13+'str=%s',[n,str]));  Reader.Free;  mStream.Free;end;procedure TForm1.Button6Click(Sender: TObject);var  sfi,si:integer;  buff:array [0..127] of byte;begin   sfi:=FileOpen('c:\s\datasb.fcn',fmOpenReadWrite);   if sfi=-1 then exit; //文件不存在// FileSeek(sfi,where,0); // 指定要读位置,0:从文件头计起   si:=FileRead(sfi,buff,4); //读入多少字节的数据    //FileSeek(sfi,where,2); // 指定要写位置,0:从文件头计起,2:从文件尾倒数   buff[0]:=$55;   buff[1]:=$aa;   filewrite(sfi,buff,8);   FileClose(sfi);end;//使用编译器开关控制版本功能{$DEFINE _ProVersion}//{$UNDEF _ProVersion}procedure TForm1.Button7Click(Sender: TObject);begin{$IFDEF _ProVersion}  ShowMessage('專業版'); {$Else}   ShowMessage('只有專業版才有此功能'); {$ENDIF} end;procedure TForm1.Button8Click(Sender: TObject);var  ch:Char;  pch1:PChar;begin  pch1:=pchar(leftstr(Edit1.Text,1));  ch:=pch1^;  ch:=UpCase(ch);  case ch of    'E':    begin      ShowMessage('E');    end;    else    begin      ShowMessage('other:'+ch);    end; end;end;end.