3

C# のフォームで Awesomium WebControl を使用しており、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 にブレークポイントを追加すると、すべての値が null の 4 つの配列になります

問題は、JSObject と設定値 JSObject Extends IDisposable の使用にあると思いますが、すべて Add("key", "Value"); にする必要があります。しかし、私が使用する方法はありません

4

1 に答える 1

5

USB ドライブDriveTypeDriveType.Fixedは、DriveType.Removable.


何も見逃していないことを確認するために、コードを取得して(実際のドライブ文字を取得する代わりに、Removable条件と参照を差し引いて)動作させることができるかどうかを確認しました。drive.Namedrive.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が正しいことを証明しています。

于 2012-03-09T18:23:46.087 に答える