【问题标题】:How can I retrieve the computer name with my Inno pascal script?如何使用我的 Inno pascal 脚本检索计算机名称?
【发布时间】:2011-11-18 19:40:26
【问题描述】:

我的 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] 部分执行类似的操作? 我尝试了上述方法,但它似乎不喜欢“使用窗口;”

【问题讨论】:

    标签: inno-setup pascalscript


    【解决方案1】:

    首先,您可以使用内置的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”。

    【讨论】:

    • 超级,GetComputerNameString 就是我想要的。我得再多介绍一下文档
    • 我收到错误“未知标识符 MAX_COMPUTERNAME_LENGTH”
    • @Jay - 这是 winbase.h 中的定义,其值为 15。
    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2019-10-28
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多