Ankündigung

Einklappen
Keine Ankündigung bisher.

COM+

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • COM+

    Hallo zusammen,

    ich habe folgendes Problem:
    Ich versuche eine COM+ Komponente in mein Script einzubinden was aber nur teilweise gelingt.

    Es wird ein XAMPP System Version 1.4.9 auf Windows verwendet. PHP ist in der Version 5.02 installiert.
    Die COM+ Komponente wurde mittels einer MS *.msi installiert. Laut Komponentendienste ist die Komponente aktiviert.

    Nun zum Source Code:

    $obj = new COM( "MY.Configuration" );

    if ( is_object ( $obj ) )
    {
    $obj->MethodeTest("123");
    }
    else
    {
    echo 'can not create object';
    }

    Das Objekt läßt sich anlegen aber beim Versuch auf die Methode zuzugreifen wird die Meldung ausgegeben "Methode nicht definiert".
    Wenn ich aber auf eine Word Application und deren Methoden zugreifen möchte funktioniert das Ganze.

    lupus

  • #2
    Na dann schau Dir halt an, was das Objekt kann
    PHP-Code:
    <?php
    error_reporting
    (E_ALL); ini_set('display_errors'true);

    $obj = new COM"MY.Configuration" );
    if ( 
    is_object $obj ) )
    {
        
    com_print_typeinfo($obj);
        
    $obj->Quit();
    }
    else
    {
        echo 
    'can not create object';

    ?>

    Kommentar


    • #3
      Soweit war ich auch schon

      "Unable to find typeinfo using the parameters supplied in ..."

      Kommentar


      • #4
        Aber print_r($obj) sagt schon, dass es ein com-Objekt ist?
        Woher kommt denn MY.Configuration?

        Kommentar


        • #5
          Hallo,
          die Ausgabe ergibt com Object.

          Dieses MY.Configuration ist ein Platzhalter um die Komonente nicht offenzulegen und kommt aus den Einstellungen
          ->Verwaltung ->Komponentendienste ->Arbeitsplatz ->COM+ Anwendungen

          Hier gibt es MY.Configuration darunter den Ordner Komponenten und dieser enthält die Komponente, die tatsächlich in
          new COM (MY.Configuration.Fred.Config ); eingetragen ist.

          Vielleicht noch eine Anmerkung:
          Das Ganze wurde in VB.net geschrieben und als dll und tlb zur Verfügung gestellt.
          Mir wurden die Methoden aus VB mitgeteilt, die zu benutzen seien.

          Kommentar


          • #6
            Dieses MY.Configuration ist ein Platzhalter um die Komonente nicht offenzulegen
            Ah...schon der Name ist geheim. Musst Du mich erschießen, wenn ich es in Erfahrung bringe? Oder muss ich das selbst machen?
            Naja, ich gehe dann mal davon aus, dass der Name eh bedeutungslos für uns ist.
            Steht Dir selbst ein Visual Studio/Developer Studio zur Verfügung? Wenn ja, schau doch mal, was dessen Komponentenbrowser dazu sagt.
            Handelt es sich dabei um eine reine .net Komponente, die "nur" über den COM-Interop angesprochen werden kann?

            Kommentar


            • #7
              Selbst ist der Mann
              Mir steht Visual C++ Version 6 zur Verfügung, aber mit dem OLE Viewer kommt man nicht weiter. In der dll steht die Methode mit einem Parameter, wenn man sich diese im Texteditor anschaut. Was mich verwundert ist das ein com_load_typelib auch nicht funktioniert.
              Aber was stimmt mit dieser dll und tlb nicht.


              Ich muß mich korrigieren:
              Im OLE Viewer ist unter .NET Category ein Eintrag zu finden. Enthalten sind wie erwartet Class, Assembly, RuntimeVersion... .
              Weiter findet sich unter Type Libraries ein Eintrag mit dem Pfad der .tlb Datei. Und unter Interfaces ist ein Eintrag zu finden.
              Ich hatte jetzt probiert über
              new DOTNET (...)
              eine Instanz zu erstellen, was aber auch fehlschlug.

              Kommentar

              Lädt...
              X