Autor Beitrag
haemi
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 25.09.09 17:10 
Hallo zusammen,

ich bin ganz neu hier und auch neu in C#. Teils mit Erfolg - teils ohne.

Ich habe ein COM Objekt als Klassenbibliothek (dll) in C# erstellt. Um das ganze zu testen zu können,
habe ich ein kleines C# Testpgramm geschrieben. Die dll ist als COM Interop freigegeben. Der Event im Code wird benötigt um
einem Programm Daten übergeben zu können.

Nun kann ich zwar auf die .dll in einem externen Programm zugreifen (COM.createObject) - aber irgendwie find ich
keine Lösung wie ich auf die gleiche .dll über C# zugreifen kann. Im Prinzip möchte ich die Methode AbaSend ansprechen können.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
using System;
using System.Runtime.InteropServices;
using System.Xml;
using System.IO;

namespace AbaTransfer
{
    [ComVisible(false)]
    public delegate void AbaDelegate(object COMStream);

    [GuidAttribute("9CC9CCAE-B300-4794-B3A8-9960D43A57D5")]
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IAbaInsert
    {
        [DispIdAttribute(1)]
        void AbaInsert([Out, MarshalAs(UnmanagedType.IDispatch)] object abaobj);
    }
    
    [GuidAttribute("C0BEE88F-01EC-4755-8B0A-A20E0563428A")]
    public interface IAbaSend
    {
        [DispIdAttribute(2)]
        bool AbaSend([In, MarshalAs(UnmanagedType.IDispatch)] object abaobj);
    }

    [ProgId("AbaDelegate")]
    [GuidAttribute("38345F3F-ADDE-4089-B868-551EA7937528")]
    [ClassInterface(ClassInterfaceType.None)]
    [ComSourceInterfaces(typeof(IAbaInsert))]

    public class AbaSendIns : IAbaSend
    {
        public event AbaDelegate AbaInsert;

        public bool AbaSend(object COMStream)
        {
            bool result = true;
            try
            {
                AbaInsert(COMStream);    
            }
            catch (Exception ex)
            {
                result = false;
                System.Windows.Forms.MessageBox.Show("Error : " + ex);
            }
            return result;
        }
    }    
}



Vielen Dank für die Unterstützung.
haemi