delphi 读取设置计算机名  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 读取设置计算机名


源代码:
-----------------------------------------------------------------------------------------

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{$APPTYPE CONSOLE}

//下面是不安全的写法
procedure TForm1.Button1Click(Sender: TObject);
var
  buf:array[0..255] of char;
  size:Cardinal;
begin
  size:=sizeof(buf);
  if GetComputerName(buf,size) then
  begin
    edit1.Text:=buf;
  end
  else
  begin
    edit1.Text:='取不到计算机名';
  end;
  //writeln(sizeof(buf));
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  size:Cardinal;
  p:PChar;

begin
  size:=MAX_COMPUTERNAME_LENGTH+1;
  getmem(p,size);
  if GetComputerName(p,size) then
  begin
    edit1.Text:=StrPas(p);
  end
  else
  begin
    edit1.Text:='取不到计算机名';
  end;
  FreeMem(p);
end;


//这是我自己的写法,可能有安全隐患
procedure TForm1.Button3Click(Sender: TObject);
var
  p:PChar;
begin
  if edit1.Text='' then exit;
  p:=pchar(edit1.Text);
  if SetComputerName(p) then
    ShowMessage('计算机名设置成功!')
  else
    ShowMessage('计算机名设置失败!');
end;

//书本上的写法,以后要照这个写法执行
procedure TForm1.Button4Click(Sender: TObject);
var
  p:PChar;
begin
  getmem(p,MAX_COMPUTERNAME_LENGTH+1);
  StrPCopy(p,edit1.Text); //string赋值到pchar,原来有这个东东
  if SetComputerName(p) then
     ShowMessage('计算机名设置成功!')
  else
     ShowMessage('计算机名设置失败!');

  FreeMem(p);  //注意getmem与freeMem是一对

end;

end.
 


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.10504794120789 seconds