2011-04-03 136 views

回答

0

這可能會訣竅。

post在頁面上。

我,在空氣中做了什麼來實現這一目標如下:

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); 
      } 
    } 
} 
+0

謝謝。但我已經完成了這種類型。問題是我不僅要爲Windows創建應用程序,還要爲MAC和Linux創建應用程序。所以,這就是爲什麼我不能遵循這種方法。我不知道這種類型的應用程序(主機名)是否存在於MAC和Linux中。 – 2011-04-03 15:35:53

+2

順便說一下,'file = new File('C:\\ Windows \\ System32 \\ hostname.exe');'是非常幼稚的方式來運行一些東西。 Windows可以安裝在不同的位置。 – alxx 2011-04-03 19:17:41

+1

正是。在Windows 2000中,有文件夾winnt。所以,這將是問題。但是我們可以檢查文件夾是否存在?這可能是有用的,但仍然不是完美的解決方案。 – 2011-04-06 23:53:56

0
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()); 
+0

我沒有要求操作系統和用戶名。我問主機名。 – 2015-02-02 13:54:12

+0

此代碼僅適用於Adobe Air。但是電腦可能會要求許可。 [SWF] Untitled-1.swf - 解壓後的1172個字節 Os:windows 7 Os名稱:Destek – 2015-02-05 10:07:10

+0

我要求獲取計算機名稱,而不是用戶名。理解? – 2015-02-07 21:38:13