Bonjour,
J'ai créé un service Windows qui enregistre une interface COM. L'interface est correctement enregistrée et visible dans dcomcnfg.exe.
Lorsque j'appel l'interface COM depuis VB, cela fonctionne.
Lorsque j'appel l'interface com en C# en utilisant le bout de code ci-dessous, cela fonctionne.
Par contre, lorsque j'utilise le code suivant, cela ne fonctionne pas. J'ai une erreur lorsque je cast l'objet en interface. L'erreur indique la la fonction QueryInterface à retournée l'erreur E_NOINTERFACE. Il me semble pourtant que c'est lma meilleure méthode pour appeler un objet COM en c#.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Type type = Type.GetTypeFromProgID("bkopapi.CBkopapiServerClass"); Object obj = Activator.CreateInstance(type); object[] funcargs = new object[1]; funcargs[0] = "test"; String Ret = (String)type.InvokeMember("GetDateTime", System.Reflection.BindingFlags.InvokeMethod, null, obj, funcargs);
Quelqu'un peut-il m'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 [ComVisible(true), ComImport, Guid("F649AE66-53F2-4080-B942-3693EE0ADF71"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] interface IBkopapiServer { string GetDateTime(string prefix); string listall(string user, string search, ref string response); } [ComImport, Guid("FF637577-6057-4807-95B3-4A6C69575656")] public class CBkopapiServer { } class Program { static void Main(string[] args) { // Test non OK CBkopapiServer c = new CBkopapiServer(); IBkopapiServer _apiserver = (IBkopapiServer)c; // Erreur E_NOINTERFACE ici String Result = _apiserver.GetDateTime("Test"); } }
Merci
Partager