Как я могу получить имя компьютера с помощью сценария Inno Pascal? - PullRequest
2 голосов
/ 18 ноября 2011

У меня были некоторые трудности с моим сценарием inno pascal.Я немного (совсем немного) ознакомился с Pascal, но теперь мне стало более понятно, что pascal script может сильно отличаться.

Следующий код прекрасно компилируется с freepascal:

program test;

uses windows;

function GetPCName: 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;

begin
   writeln('ComputerName: ' + (GetPCName));
   readln;
end.

Как я могу сделать что-то подобное в моем разделе inno [code]?Я пробовал выше, но это не похоже на "использует окна;"

1 Ответ

5 голосов
/ 19 ноября 2011

Во-первых, вы можете использовать встроенную функцию поддержки GetComputerNameString.

Вы можете объявить функцию в разделе кода, чтобы иметь возможность вызывать библиотечные функции.Должно работать что-то вроде ниже:

[Code]
function GetComputerName(lpBuffer: AnsiString; var nSize: DWORD): BOOL;
external 'GetComputerNameA@kernel32.dll';

function GetPCName: string;
var
  Size: Cardinal;
  buffer: AnsiString;
begin
  Size := MAX_COMPUTERNAME_LENGTH + 1;
  SetLength(buffer, Size);
  GetComputerName(buffer, Size);
  Result := buffer;
end;

Смотрите 'codedll.iss' в папке примеров inno setup.

...