各位网友:
我有一个技术问题,就是如何在delphi中得到计算机的名字;我曾经用winsock控件得到了计算机的名字,在winme,win2000/xp下运行正常,可是在win98运行出错,另外,我不知道delphi中winsock是否要另外有控件或dll,activex等类东西,还是windows系统自带,我的系统里装有delphi6,和visual studio6这个控件原本在delphi的activex组件板上没有,是我加进去的。我不知道,这个控件来自何方,敬请各位网友,指点一二!
我有一个技术问题,就是如何在delphi中得到计算机的名字;我曾经用winsock控件得到了计算机的名字,在winme,win2000/xp下运行正常,可是在win98运行出错,另外,我不知道delphi中winsock是否要另外有控件或dll,activex等类东西,还是windows系统自带,我的系统里装有delphi6,和visual studio6这个控件原本在delphi的activex组件板上没有,是我加进去的。我不知道,这个控件来自何方,敬请各位网友,指点一二!
GetComputerNameBOOL GetComputerName( LPTSTR lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
);
var ComputerName: PChar; size: DWord;
begin
GetMem(ComputerName,255);
size:=255;
// 获取计算机名称
if GetComputerName(ComputerName,size)=False then
result:=''
else
result:=ComputerName;
FreeMem(ComputerName);
end;
ComputerName: PChar;
Size: DWORD;
begin
GetMem(ComputerName,255);
Size:=255;
GetComputerName(ComputerName,Size);
end;
ComputerName: PChar;
Size: DWORD;
begin
GetMem(ComputerName,255);
Size:=255;
GetComputerName(ComputerName,Size);
ShowMessage('计算机名:'+ComputerName);
end;
我已试过,可以win2000
计算机 Computer
+ 名 Name
-------------------------------------
得到计算机名 GetComputerName()
你们的方法在win98下是否行的通呢?在win2000下我的方法是取得win2000的系统变量,在msdn里有一个函数getv***(COMPUTERNAME)(抱歉,函数名我没有记全),在Delphi里对他进行了重载,可以得到计算机名,但在win98下,不行。GetComputerName(ComputerName,Size);这个函数,我也用过,可是都运行出错,报告内存某个地址不允许读写等等,不知是何原因!
感谢二位!
var
ComputerName: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char;
nSize: DWORD;
begin
nSize := MAX_COMPUTERNAME_LENGTH + 1;
FillChar(ComputerName, MAX_COMPUTERNAME_LENGTH, 0);
Windows.GetComputerName(ComputerName, nSize);
Result := ComputerName
end;