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");但我没有使用的方法
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
的使用是正确的。