【问题标题】:Getting computer name in Adobe AIR在 Adob​​e AIR 中获取计算机名称
【发布时间】:2011-04-03 11:17:31
【问题描述】:

大家好: 谁能告诉我如何使用 Adob​​e AIR 获取本地计算机名称。

请尽快回复我。提前致谢。

【问题讨论】:

    标签: actionscript-3 flex4 air flexbuilder flash-builder


    【解决方案1】:

    这可能会奏效。

    页面上的最后一个post

    我在 Air 2 中所做的事情如下:

    public function getHostName():void {  
        if(NativeProcess.isSupported) {  
            var OS:String = Capabilities.os.toLocaleLowerCase();  
            var file:File;  
    
            if (OS.indexOf('win') > -1) {  
                 //Executable in windows  
                 file = new File('C:\\Windows\\System32\\hostname.exe');  
            } else if (OS.indexOf('mac') > -1 ) {  
                 //Executable in mac  
            } else if (OS.indexOf('linux')) {  
                 //Executable in linux  
            }  
    
            var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
            nativeProcessStartupInfo.executable = file;  
    
            var process:NativeProcess = new NativeProcess();
            process.addEventListener(NativeProcessExitEvent.EXIT, onExitError);  
            process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutput);  
            process.start(nativeProcessStartupInfo);  
            process.closeInput();  
         }  
    }  
    
    import utls.StringHelper;
    public function onOutput(event:ProgressEvent):void {  
        var strHelper:StringHelper = new StringHelper();
        var output:String = event.target.standardOutput.readUTFBytes(event.target.standardOutput.bytesAvailable);
        output = strHelper.trimBack(output, "\n");
        output = strHelper.trimBack(output, "\r");
    
        trace('"'+output+'"');
    }
    

    我使用的包来自手册:

    package utls  
    {  
         public class StringHelper  
         {  
              public function StringHelper()  
              {  
              }  
    
              public function replace(str:String, oldSubStr:String, newSubStr:String):String {  
                   return str.split(oldSubStr).join(newSubStr);  
              }  
    
              public function trim(str:String, char:String):String {  
                   return trimBack(trimFront(str, char), char);  
              }  
    
              public function trimFront(str:String, char:String):String {  
                   char = stringToCharacter(char);  
                   if (str.charAt(0) == char) {  
                        str = trimFront(str.substring(1), char);  
                   }  
                   return str;  
              }  
    
              public function trimBack(str:String, char:String):String {  
                   char = stringToCharacter(char);  
                   if (str.charAt(str.length - 1) == char) {  
                        str = trimBack(str.substring(0, str.length - 1), char);  
                   }  
                   return str;  
              }  
    
              public function stringToCharacter(str:String):String {  
                   if (str.length == 1) {  
                        return str;  
                   }  
                   return str.slice(0, 1);  
              }  
         }  
    }  
    

    【讨论】:

    • 谢谢。但我已经完成了这种类型。问题是我不仅要为窗口创建应用程序,还要为 MAC 和 linux 创建应用程序。所以,这就是为什么我不能遵循这种方法。我不知道MAC和Linux中是否存在这种类型的应用程序(主机名)。
    • 顺便说一句,file = new File('C:\\Windows\\System32\\hostname.exe'); 是一种非常幼稚的运行方式。 Windows 可以安装在不同的位置。
    • 没错。在 Windows 2000 中,有文件夹 winnt。所以,会出问题的。但是我们可以检查文件夹是否存在?它可能很有用,但仍然不是完美的解决方案。
    • 也无法在 Mac、Ubuntu 或任何未安装在 C:\Windows 的 Windows 安装上运行。
    • @MudasirBhutto :我有类似的要求。您是否能够跨不同操作系统获取主机名?
    【解决方案2】:
    import flash.filesystem.File;
    
    var OS:String = Capabilities.os.toLocaleLowerCase();
    
    function currentOSUser():String { 
        var userDir:String = File.userDirectory.nativePath; 
        var userName:String = userDir.substr(userDir.lastIndexOf(File.separator) + 1); 
        return userName; 
    }
    
    trace( 'Os : ' + OS );
    trace( 'Os Name: ' + currentOSUser() );
    

    【讨论】:

    • 我没有询问操作系统和用户名。我要求提供主机名。
    • 此代码仅适用于 Adob​​e Air 工作。但是计算机可能会请求许可。 [SWF] Untitled-1.swf - 解压后 1172 字节操作系统:windows 7 操作系统名称:Destek
    • 我要求获取计算机名,而不是用户名。明白了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多