Awesomium JSObject是如何工作的我可以';我找不到一个例子

本文关键字:找不到 一个 我可以 JSObject 何工作 Awesomium 工作 | 更新日期: 2023-09-27 18:27:13

我在C#中的Form上使用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和Setting值JSObject扩展了IDisposable,尽管我必须全部添加("key","Value");但我没有使用的方法

Awesomium 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的使用是正确的。

相关文章: