【发布时间】:2011-04-03 11:17:31
【问题描述】:
大家好: 谁能告诉我如何使用 Adobe AIR 获取本地计算机名称。
请尽快回复我。提前致谢。
【问题讨论】:
标签: actionscript-3 flex4 air flexbuilder flash-builder
大家好: 谁能告诉我如何使用 Adobe AIR 获取本地计算机名称。
请尽快回复我。提前致谢。
【问题讨论】:
标签: actionscript-3 flex4 air flexbuilder flash-builder
这可能会奏效。
页面上的最后一个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);
}
}
}
【讨论】:
file = new File('C:\\Windows\\System32\\hostname.exe'); 是一种非常幼稚的运行方式。 Windows 可以安装在不同的位置。
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() );
【讨论】: