如何使用Inno pascal脚本检索计算机名称?

red*_*888 2 inno-setup pascalscript

我的inno pascal脚本遇到了一些困难.我用Pascal熟悉了一下(稍微有点),但现在我觉得pascal 脚本可能会有很大不同.

以下代码使用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.
Run Code Online (Sandbox Code Playgroud)

我怎么能在我的inno [code]部分做这样的事情?我尝试了上面的内容,但似乎并不喜欢"使用Windows";

Ser*_*yuz 5

首先,您可以使用内置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;
Run Code Online (Sandbox Code Playgroud)


请参阅inno setup的examples文件夹中的'codedll.iss'.