Awesomium JSObject如何工作我找不到一个例子

时间:2012-03-09 18:04:01

标签: c# windows winforms awesomium

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

以下是将设备插入计算机时触发的代码

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); 添加断点时,js_arr是一个4的数组,其中所有值都为空

我认为问题是我使用JSObject和设置值JSObject扩展IDisposable而我虽然我必须全部添加(“key”,“Value”);但是这个方法不适合我使用

1 个答案:

答案 0 :(得分:5)

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