2

我的 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.

我怎样才能在我的 inno [code] 部分做这样的事情?我尝试了上述方法,但它似乎不喜欢“使用 Windows;”

4

1 回答 1

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;


请参阅 inno setup 的示例文件夹中的“codedll.iss”。

于 2011-11-18T20:33:40.637 回答