6

コードは D2007 および D2009 と互換性がある必要があります。


私の答え: 答えてくれたみんなに感謝します。

function ComputerName : String;
var
  buffer: array[0..255] of char;
  size: dword;
begin
  size := 256;
  if GetComputerName(buffer, size) then
    Result := buffer
  else
    Result := ''
end;
4

7 に答える 7

21

Windows API GetComputerNameが機能するはずです。これは、windows.pas で定義されています。

于 2009-07-20T23:47:59.097 に答える
15

うまく機能する別のアプローチは、環境変数を介してコンピューター名を取得することです。このアプローチの利点(またはソフトウェアによっては欠点)は、プログラムをだまして別のマシンとして簡単に実行できることです。

Result := GetEnvironmentVariable('COMPUTERNAME');

コンピュータ名の環境変数は、システムによって設定されます。動作を「オーバーライド」するには、プログラムを呼び出すバッチファイルを作成し、呼び出しの前に環境変数を設定します(各コマンドインタープリターは環境の独自の「コピー」を取得し、変更はそのセッションまたは任意の子に対してローカルです)そのセッションから起動)。

于 2009-07-21T00:10:30.957 に答える
12

Windows API から GetComputerName を使用する方法です。これがそのラッパーです。

function GetLocalComputerName : string;
    var c1    : dword;
    arrCh : array [0..MAX_PATH] of char;
begin
  c1 := MAX_PATH;
  GetComputerName(arrCh, c1);
  if c1 > 0 then
    result := arrCh
  else
    result := '';
end;
于 2009-07-21T01:26:04.650 に答える
4

これはどうですか :

function GetComputerName: 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);<br/>
end;

http://exampledelphi.com/delphi.php/tips-and-tricks/delphi-how-to-get-computer-name/から

于 2011-04-05T15:07:17.657 に答える
2

私はこれを使って、

function GetLocalPCName: String;
var
    Buffer: array [0..63] of AnsiChar;
    i: Integer;
    GInitData: TWSADATA;
begin
    Result := '';
    WSAStartup($101, GInitData);
    GetHostName(Buffer, SizeOf(Buffer));
    Result:=Buffer;
    WSACleanup;
end;

さよなら

于 2009-07-20T23:48:03.153 に答える