要给CRM加一个功能,这个功能比较特殊要用C#来完成,大概想写成一个工具栏有几个小按钮.CRM是B/S结构的,我想能不能在C#中写一个像在Delphi或其它软件中的Activex的东西,在HTML合适的地方嵌入这个东西,只要在Html中看到C#写的这个东西,并能执行即可。实现一些特殊的功能 。,这些天才开始学C#,好像还没有找到感觉。请大家 给个思路.谢谢!

解决方案 »

  1.   

    应该不可以,activex在客户端执行,客户端不一定有dotnet framework
      

  2.   

    比如 
    // AxComp.cs
    using System;
    using System.Runtime.InteropServices;
    namespace AXComponent 
    {public interface AXTest
    {
    string callMe();
    }[ClassInterface(ClassInterfaceType.AutoDual)]
    public class AxComp :AXTest
    {
    public string callMe()
    {
    return "My dog has no nose, how does it smell?";
    }
    }
    }Compile this using:
    csc /t:library AxComp.csRegister and generate Typelib with:
    regasm AxComp.dll /tlb:AxCompNet.dll /codebaseTry the control: ( testControl.htm )
    <html>
    <head>
    <script language="javascript">
    var obNewAXComponent = new ActiveXObject("AXComponent.AXComp");
    alert(obNewAXComponent.callMe());
    </script>
    </head>
    <body>
    <h1>Awful!</h1>
    </body>
    </html>参考
    http://www.cnblogs.com/homer
      

  3.   

    http://chs.gotdotnet.com/quickstart/winforms/doc/WinFormsIeSourcing.aspx
      

  4.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=D87624FF-C6E9-471E-8BE3-67D1C7EA5443
      

  5.   

    完全可以。你把你的Form改成从UserControl里面继承出来。然后把工程输出设置为dll,然后在HTML中用<object>引用就可以了。
      

  6.   

    我试过了,在本机(http://149.10.10.198/agent/agent.htm)可以执行,但是如果从别的机器(k001)打开(http://149.10.10.198/agent/agnet.htm)时不能显示Activex.K001机器上安装了.net环境,这是怎么回事?如果把DLL和HTM文件放到别的机器(k001)上并建上虚拟目录,k001上执行 http://localhost/agent/agent.htm还是不行,但从我的机器访问Http://k001/agent/agent.htm可以上正常。这是怎么回事?
      

  7.   

    啊?那怎么办呀?一个Exe 怎么能用WEB里看到,我的客户端必须要用IE。
      

  8.   

    这个是可以实现在的,你要把那个项目属性里修改一个属性,在"配置属性"里的"生成"里有一项叫"为 COM Interop 注册"设为"TRUE",这样项目的输出类型就为"ActiveX"了,只要一编译就会注册完成,然后就可以在WEB里使用.如果还有什么不明白可以再跟我联系
      

  9.   

    哈哈!忘记给你说了,要配置.net 的安全性,还有IE的信任站点,和Intranet的安全性。
      

  10.   

    你去dev.csdn.net上去搜一下,我去年的时候好像看到过的。