Bonjour,
Je travaille sur une application qui utilise un périphérique un peu spécial.
Le périphérique est livré avec une driver et une série de dll pour l'utiliser.

Jusque là, pas de soucis. J'ai développé un client lourd qui me permet de récupérer les données depuis ce périphérique et les traiter comme je veux.
Je voudrai maintenant faire évoluer mon soft pour ne plus avoir un client lourd mais passer par un client léger.

Le hic, c'est que même si j'installe les drivers sur les clients, je ne vois pas comment y accéder depuis une appli Web.
Ce qui nous amène à mon problème du jour :
Mes recherches m'ont amené à ActiveX. J'ai donc tenté de suivre un tutoriel en mode hello world, mais je suis tombé sur une jolie petite erreur du type :
- Un composant ActiveX ne peut pas créer un objet.

A partir de là, je me suis trouvé face à une impasse.
Quelqu'un aurait il une idée d'où cela peut venir ?

Je vous remercie par avance

Pour info :
J'utilise un projet dll en .net 4.0 que j'inscris avec succés grâce à Regasm (V4).

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Runtime.InteropServices;
 
 
namespace csharp.activex.sample
{
    [
        Guid( "E86A9038-368D-4e8f-B389-FDEF38935B2F"),
        InterfaceType( ComInterfaceType.InterfaceIsDual),
        ComVisible( true)
    ]
    public interface IHello
    {
        [DispId(1)]
        string Hello();
 
        [DispId(2)]
        int ShowDialog(string msg);
    };
 
    [
        Guid("873355E1-2D0D-476f-9BEF-C7E645024C32"),
         ProgId("csharpAx.CHello"),
         ClassInterface(ClassInterfaceType.None),
         ComDefaultInterface(typeof(IHello)),
        ComVisible(true)
    ]
    public class CHello : IHello
    {
 
        #region [IHello implementation]
        public string Hello()
        {
            return "Hello from CHello object";
        }
 
        public int ShowDialog(string msg)
        {
            return 42;
        }
        #endregion
    };
}
Voici le code de la page que j'affiche :
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
25
26
27
28
29
 
<html xmlns="http://www.w3.org/1999/xhtml">
	<head> <title>C# ActiveX Test</title> </head>
 
	<body onload="myload();">
		<h1>This is Our ActiveX Test Page </h1>
 
		The message from the ActiveX Control is [
			<div id="axmsg"></div>
		]
 
		<script type ="text/javascript">
			function myload()
			{
				var myAx = new ActiveXObject("csharpAx.CHello");
				if(myAx != null)
				{
					myAx.ShowDialog("hello from asp.net");
					var d = document.getElementById("axmsg");
 
					var s = myAx.Hello();
					d.outerText = s;
				}
				else
					alert("NOOOO... we failed");
			}
		</script>
	</body>
</html>