gpt4 book ai didi

windows - 从运行 AIR 应用程序的设备检索制造商信息

转载 作者:可可西里 更新时间:2023-11-01 11:32:37 27 4
gpt4 key购买 nike

有没有人知道一种方法来检索有关运行 AIR 应用程序的设备的制造商/型号的信息。 Capabilities 类似乎并没有削减它。

该解决方案只需要适用于在 Windows 台式机或笔记本电脑上运行的 AIR 应用程序,它不需要是模型的描述性字符串 - 只要它是特定模型或设备独有的一段数据(或至少是特定的制造商)。

最佳答案

在 Windows 上,可以使用 WMIC 或 Windows Management Instrumentation Command-line 查询主板的序列号。 .因此,您可以使用 flash.desktop.NativeProcess 将命令 wmic baseboard get serialnumber 作为参数传递给 cmd.exe。无需原生扩展。

由于使用了 AIR NativeProcess API,您必须使用 Extended Desktop 应用程序配置文件并使用 native 安装程序打包您的应用程序。

package 
{
//Imports
import flash.display.Sprite;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.desktop.NativeProcess;
import flash.desktop.NativeProcessStartupInfo;
import flash.events.ProgressEvent;
import flash.filesystem.File;

//Class
[SWF(width = "600", height = "250", frameRate = "60", backgroundColor = "0x000000")]
public class Main extends Sprite
{
//Constants
private static const MOTHERBOARD_SERIALNUMBER_COMMAND:String = "wmic baseboard get serialnumber";

//Properties
private var nativeProcess:NativeProcess;

//Constructor
public function Main():void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

init();
}

//Init
private function init():void
{
if (!NativeProcess.isSupported)
{
throw new Error("Native Process is not supported.");
}

var file:File = new File("C:\\Windows\\System32\\cmd.exe");

var args:Vector.<String> = new Vector.<String>();
args.push("/c");
args.push(MOTHERBOARD_SERIALNUMBER_COMMAND);

var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.arguments = args;

nativeProcess = new NativeProcess();
nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, outputDataEventHandler);
nativeProcess.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, outputErrorEventHandler);
nativeProcess.start(nativeProcessStartupInfo);
}

//Output Data Event Handler
private function outputDataEventHandler(event:ProgressEvent):void
{
var output:String = nativeProcess.standardOutput.readUTFBytes(nativeProcess.standardOutput.bytesAvailable);

nativeProcess.exit();

trace(output);
}

//Output Error Event Handler
private function outputErrorEventHandler(event:ProgressEvent):void
{
nativeProcess.exit();

throw new Error(event);
}
}
}

[编辑]

或者,如果您还想检索主板的制造商、型号和序列号,您可以将字符串常量更新为:

//Constants
private static const MOTHERBOARD_INFO:String = "wmic baseboard get product, manufacturer, serialnumber";

[编辑 2]

我刚刚了解到以下 WMIC 命令将返回机器的名称、供应商和标识号。这听起来正是您要找的:

//Constants
private static const CSPRODUCT_INFO:String = "wmic csproduct get name, vendor, identifyingNumber";

但是,请记住,对于定制的 PC,例如我自己的,此命令不返回任何内容。好吧,不是什么都没有,而是一些典型的东西,比如:

IdentifyingNumber  Name           Vendor
99L9891 Latitude D610 Dell Inc.

我的自定义构建返回这个:

IdentifyingNumber     Name                 Vendor
System Serial Number System Product Name System manufacturer

关于windows - 从运行 AIR 应用程序的设备检索制造商信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17710880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com