gpt4 book ai didi

c# - Awesomium JSObject 如何工作我找不到示例

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

我在 C# 中的表单上使用 Awesomium WebControl,我试图将信息传递到浏览器,表明已插入 USB 设备我的 USB 检测工作正常,但由于某种原因我无法构建 JSObject() 以及插入其中的每个设备的值。

这是当设备插入计算机时触发的代码

JSObject js_obj;

DriveInfo[] allDrives = DriveInfo.GetDrives();

JSValue[] js_arr = new JSValue[allDrives.Count()];

int count = 0;

foreach (DriveInfo drive in allDrives)
{
if (drive.IsReady == true)
{
if (drive.DriveType == DriveType.Removable)
{
js_obj = new JSObject();
js_obj["Id"] = new JSValue("");
js_obj["TimeAdded"] = new JSValue("");
js_obj["DriveLetters"] = new JSValue(drive.VolumeLabel);
js_obj["Port"] = new JSValue("");
js_arr[count] = new JSValue(js_obj);
count++;
}
}
}

this.Browser.CallJavascriptFunction("DiskDetector", "DeviceAdded", js_arr);

但是当我在 this.Browser.CallJavascriptFunction("DiskDetector", "DeviceAdded", js_arr); 处添加一个断点时,js_arr 是一个包含 4 个元素的数组,其中所有值为空

我认为问题是我对 JSObject 的使用和设置值但是没有我可以使用的方法

最佳答案

USB 驱动器有时可以有 DriveType DriveType.Fixed 而不是 DriveType.Removable


为了确保我没有遗漏任何东西,我还获取了您的代码(减去您的 Removable 条件并引用 drive.Name 而不是 drive.VolumeLabel 以获取实际的驱动器盘符)以查看我是否可以让它工作:

JSObject js_obj;

DriveInfo[] allDrives = DriveInfo.GetDrives();

JSValue[] js_arr = new JSValue[allDrives.Count()];

int count = 0;

foreach (DriveInfo drive in allDrives)
{
if (drive.IsReady == true)
{
js_obj = new JSObject();
js_obj["Id"] = new JSValue("");
js_obj["TimeAdded"] = new JSValue("");
js_obj["DriveLetters"] = new JSValue(drive.Name);
js_obj["Port"] = new JSValue("");
js_arr[count] = new JSValue(js_obj);
count++;
}
}

foreach (var js_val in js_arr)
{
if (js_val == null)
continue;

Trace.WriteLine(js_val.GetObject()["DriveLetters"].ToString());
}

它输出:

C:\
S:\
T:\
Y:\
Z:\

如我所料。我仍然不确定为什么它对您不起作用,但这证明您对 JSObject 的使用是正确的。

关于c# - Awesomium JSObject 如何工作我找不到示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9638816/

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