2

innopascalスクリプトで問題が発生しています。私は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]セクションでこのようなことをするにはどうすればよいですか?上記を試してみましたが、「ウィンドウを使う」とは思えません。

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 セットアップのサンプル フォルダーにある「codedll.iss」を参照してください。

于 2011-11-18T20:33:40.637 に答える