Vamos iniciar colocando em nosso formulário 4 componentes, sendo 2 TLabeledEdit(LblEdtNomeAtual, LblEdtNovoNome), e 2 TButton(BtnNomeAtual, BtnNovoNome), mudamos os nomes para facilitar o entendimento.
Ficando da seguinte maneira :

Agora vamos precisar declarar duas function na seção private da classe do nosso formulário.
Listagem 1: Declaração das functions
type
TForm1 = class(TForm)
BtnNovoNome: TButton;
LblEdtNovoNome: TLabeledEdit;
LblEdtNomeAtual: TLabeledEdit;
BtnNomeAtual: TButton;
private
function LoadComputerName: string;
function PostComputerName(pNewName: string): Boolean;
{ Private declarations }
public
{ Public declarations }
end;
Agora vamos a implementação das duas functions
Listagem 2: Implementação da function LoadComputerName
function TForm1.LoadComputerName: string;
var
buffer: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char;
Size: Cardinal;
begin
Size := MAX_COMPUTERNAME_LENGTH + 1;
Windows.GetComputerName(@buffer, Size);
Result := StrPas(buffer);
end;
function TForm1.PostComputerName(pNewName: string): Boolean;
var
ComputerName: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char;
Size: Cardinal;
begin
StrPCopy(ComputerName, pNewName);
Result := Windows.SetComputerName(ComputerName);
end;
Listagem 4: Implementação do BtnNomeAtual
procedure TForm1.BtnNomeAtualClick(Sender: TObject);
begin
LblEdtNomeAtual.Text := LoadComputerName;
end;
Listagem 5: Implementação do BtnNovoNome
procedure TForm1.BtnNovoNomeClick(Sender: TObject);
begin
PostComputerName(LblEdtNovoNome.Text);
ShowMessage('Reinicie o computador para ver o resultado');
end;
Observe que ao passar o nome do computador coloquei um ShowMessage, pois é exatamente isso que temos que fazer pra ver o resultado, reiniciar o computador.
Obs : Funciona no Windows XP e Windows Vista, no Windows 7 houve mudanças no registro por isso a função de PostName, não irá funcionar.
Fico por aqui e até a próxima.
Um abraço
Wesley Y
www.lithic.com.br