none
COM Objekt aufrufen RRS feed

  • Frage

  • Hi,

    ich möchte einen Aufruf an einem COM-Objekt machen. In VB6 sieht der Code wie folgt aus:

        Dim o As Object 'Das COM Object
        Set o = CreateObject("ProgID")
        If Not (o Is Nothing) Then
          retVal = o.MethodeDieIchAufrufenMoechte
        End If

    Wie kann ich diesen Aufruf umsetzen, ohne dass ich eine Referenz auf das COM Objekt aufnehmen muss?

    Danke

    Christian

    Freitag, 20. Mai 2011 08:53

Antworten

  • Hallo Christian,

    hier Beispiele dazu ....

    [Späte Bindung bei C# am Beispiel Word]
    http://dzaebel.net/LatebindWord.htm

    "Word.Application" ist dabei Deine ProgID.
    Eine Methode aufrufen über InvokeMember nebst BindingFlags.InvokeMethod.

     

     

     

     


    ciao Frank
    • Als Antwort markiert Christian315 Freitag, 20. Mai 2011 10:08
    Freitag, 20. Mai 2011 09:12
  • Hallo Christian,

    Wenn Du späte Bindung verwenden möchtest:

    Type wordAppType = Type.GetTypeFromProgID("Word.Application");
    if (wordAppType != null)
    {
      object wordApp = Activator.CreateInstance(wordAppType);
    
      if (wordApp != null)
      {
        object objTrue = true;
        wordAppType.InvokeMember("Visible", System.Reflection.BindingFlags.SetProperty, null, wordApp, new object[] {objTrue}); 
      }
    }
    
    

    Ab C# 4.0 gibt es das keyword dynamic, welches das COM-Interop wesentlich erleichtert. Informiere Dich bitte hier dazu:

    Verwenden des Typs dynamic (C#-Programmierhandbuch):
    http://msdn.microsoft.com/de-de/library/dd264736.aspx

    Gruß
    Marcel

    • Als Antwort markiert Christian315 Freitag, 20. Mai 2011 10:08
    Freitag, 20. Mai 2011 09:53
    Moderator

Alle Antworten

  • Hallo Christian,

    hier Beispiele dazu ....

    [Späte Bindung bei C# am Beispiel Word]
    http://dzaebel.net/LatebindWord.htm

    "Word.Application" ist dabei Deine ProgID.
    Eine Methode aufrufen über InvokeMember nebst BindingFlags.InvokeMethod.

     

     

     

     


    ciao Frank
    • Als Antwort markiert Christian315 Freitag, 20. Mai 2011 10:08
    Freitag, 20. Mai 2011 09:12
  • Hallo Christian,

    Wenn Du späte Bindung verwenden möchtest:

    Type wordAppType = Type.GetTypeFromProgID("Word.Application");
    if (wordAppType != null)
    {
      object wordApp = Activator.CreateInstance(wordAppType);
    
      if (wordApp != null)
      {
        object objTrue = true;
        wordAppType.InvokeMember("Visible", System.Reflection.BindingFlags.SetProperty, null, wordApp, new object[] {objTrue}); 
      }
    }
    
    

    Ab C# 4.0 gibt es das keyword dynamic, welches das COM-Interop wesentlich erleichtert. Informiere Dich bitte hier dazu:

    Verwenden des Typs dynamic (C#-Programmierhandbuch):
    http://msdn.microsoft.com/de-de/library/dd264736.aspx

    Gruß
    Marcel

    • Als Antwort markiert Christian315 Freitag, 20. Mai 2011 10:08
    Freitag, 20. Mai 2011 09:53
    Moderator
  • Hi Marcel,

    super!

    Viele Dank und viele Grüße

    Christian

    Freitag, 20. Mai 2011 10:08
  • Hi Frank,

    supidupi.

    Vielen Dank und viele Grüße

    Christian

    Freitag, 20. Mai 2011 10:08