Announcement

Collapse
No announcement yet.

Type Library einbinden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Type Library einbinden

    Hallo,

    ich möchte ein COM-Objekt(befindet sich auf einem Server im Netzwerk) von einem Client aus aufrufen und seine Klassen verwenden.
    Wenn ich das COM-Objekt auf dem eigenen PC über den Objekt Browser im VS2008 einbinde, kann ich sie wunderbar nutzen. Nur ist das nicht genug. Ich muss es auch schaffen, wenn das COM-Objekt nicht auf meinem PC ist. Wie aber geht das?

    So viel habe ich schon herausgefunden:

    Code:
                    Type srvtype = Type.GetTypeFromProgID("WrsComServer.ComAbacus", "Servername", true);
                    Object srvobject = Activator.CreateInstance (srvtype);

    Jetzt habe ich ein COM-Objekt. Wie aber bekomme ich den Verweis auf die Klasse im Serverobjekt?
    Zuletzt editiert von Marius Munsche; 08.07.2009, 16:39. Reason: besseres Verständnis

  • #2
    jetzt besser verständlich?

    Comment


    • #3
      brauche immer noch Hilfe.

      Comment


      • #4
        Hartnäckig

        Dein gezeigter Code sollte doch funktionieren, oder nicht?
        Wo liegt im folgenden den dein eigentliches Problem?

        Comment


        • #5
          nun du meinst wie du an das Objekt so kommst als hättest du im VisualStudio eingebunden also mit direktem Zugriff auf alle Member.
          Da könntest du durch deine SpäteBindung des Objektes ein Problem bekommen.
          Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

          Comment


          • #6
            ich weiß bei dem Problem einfach nicht nach was ich suchen soll. Das war bis jetzt das Einzige, was ich gefunden habe. Ich mache es auch gerne ganz anders. Ich weiß nur nicht, wie überhaupt. Es muss doch möglich sein, an das Objekt zu kommen, wenn es auf einer anderen Maschine läuft.

            Comment


            • #7
              Nochmal. Der von dir gezeigte Code funktioniert doch oder? Und wenn nicht was passiert und was hättest du erwartet?

              Comment


              • #8
                Originally posted by Ralf Jansen View Post
                Nochmal. Der von dir gezeigte Code funktioniert doch oder? Und wenn nicht was passiert und was hättest du erwartet?
                er funktioniert schon. Ich hab jetzt ein COM-Objekt. Wie mache ich jetzt weiter? würde gerne die Methoden in dem Objekt benutzten.

                Comment


                • #9
                  Per InvokeMember auf dem Type Object kannst du Methoden aufrufen (Late Bound).

                  Code:
                  returnValueDerMethode = srvType.InvokeMember("MeineMethode", BindingFlags.InvokeMethod,
                                          null, srvobject , objectArrayMitDenAufrufArgumentenDerMethode);

                  Comment


                  • #10
                    vielen Dank Ralf. Klappt wunderbar.

                    Allerdings habe ich noch ein Problem.

                    Die eine Methode rufe ich mit folgendenen Parametern auf: (15, 4, AdrFields, out OutFields, ref reft, out refn)

                    In InvokeMember muss ich jetzt ein ObjektArray mitgeben. Wie packe ich denn da bitte ref und out rein?? geht das überhaupt?

                    Comment


                    • #11
                      ref und out als Schlüsselwort kann man eigentlich ignorieren. Du musst halt nur in deinem Object Array den ref Wert an die richtige Stelle schreiben und nach dem Methodenaufruf ref und out Parameter wieder aus dem Object Array rauspulen.

                      Comment

                      Working...
                      X