1

.NET と対話するために使用する COM ライブラリを接続しようとしています。VB6では、同じことをするだけでできました

private withevents _monitor as new Application

そして、私はただすることができました

monitor_onPrintText(byval msg as string, byval draw as boolean)

そして、モニター側で何かが印刷されるたびに、イベントを発生させて、何かを送り返します。ただし、C# ではコマンドを実行できますが、VB6 のように通常の状態に戻ることはありません。私が読んだすべてが言うように、私は自分が間違っていることについてただ興味があります

_monitor.onPrintText += onPrintText; 

動作するはずですが、イベントを発生させることができません。

この codeproject プロジェクトMSDN 、およびその他の多くのリソースを試しましたが、このいまいましいことを機能させることができません! これがコードの基本です。com オブジェクトをインポートして作成した 3 つの「インターフェイス」をすべて追加し、あらゆる種類のさまざまな組み合わせを試しました。私の「起動」スクリプトは true を返し、途中でいくつかのメッセージとともに onPrintText イベントを数回発生させる必要があります (または、少なくとも VB6 で行っていることです...)。

using System;
using monitorLib;

public class MyClass 
{
    private Application _monitor;

    public MyClass()
    {
        _monitor = new Application;
        _monitor.onPrintText += onPrintText;

        // Doing this runs a "script" which causes the 
        // event to fire whenever print is called from it.
        _monitor.evaluate("run(\"startup\");"); 
    }


    public dynamic Evaluate(string pScript)
    {
        return _monitor.evaluate(pScript);
    }

    public void PrintText(string p_text, bool p_drawNow)
    {
        debug.print(p_text);
    }
}
4

2 に答える 2