Appel interface COM enregistrée depuis un service
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.
Code:
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); |
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:
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");
}
} |
Quelqu'un peut-il m'aider ?
Merci