考勤机的一个接口是dll的,在form下,可以用引入com控件的形式,在工具栏就可以把这个控件拉入窗体使用
那如果是web下,要怎么去调用?同样引入com控件,但是调用异常, web下,com控件应该怎么调用呢?

解决方案 »

  1.   

     axFKAttend1 是考勤机控件  
     int result = axFKAttend1.ConnectNet(1, ip, 5005, 5000, 0, pwd, license); 在web下
    用过 FKAttendClass fk = new FKAttendClass();
        fk.ConnectNet(1, ip, 5005, 5000, 0, pwd, license);
    失败用
    Assembly ass = Assembly.LoadFrom(path+"Interop.FKAttendLib.dll");
    Type myType = ass.GetType("FKAttendLib.FKAttendClass");
    object aPerson = aPerson = Activator.CreateInstance(myType, null);
    BindingFlags flag = BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance;
    string name = (string)myType.InvokeMember("ConnectNet", flag, null, aPerson, new object[] {1, ip, 5005, 5000, 0, pwd, license });
    也失败在web下还没有调过这类的控件,哪位大大有时间给点这方面的资料或者解答一下,谢谢
      

  2.   

    1、想清楚你的考勤机是装在服务器还是客户端
    2、想清楚你的考勤机接口是COM还是OCX,如果是COM,可以在服务器端调用(假如ASP中的ADODB),如果是OCX只能在客户端调用
      

  3.   

    考勤机是有独立的IP,可以直接网线连接接口是vb写的,然后生成dll如果是com应该我那样的调用方式正常,ocx只能客户端调用那只能和js配合?
      

  4.   

        这是我点转到定义里,看到的部份内容
        [TypeLibType(34)]
        [ClassInterface(0)]
        [ComSourceInterfaces("FKAttendLib._DFKAttendEvents")]
        [Guid("827B9BAA-D3CC-41AD-A0A8-5F383261B792")]
        public class FKAttendClass : _DFKAttend, FKAttend, _DFKAttendEvents_Event
        {
            public FKAttendClass();        [DispId(72)]
            public virtual int BenumbAllManager();
            [DispId(39)]
            public virtual int ClearKeeperData();
      

  5.   

    上面这些代码是自动生成的,不能修改
    你还是看看fk.ConnectNet(1, ip, 5005, 5000, 0, pwd, license);提示什么错误吧
      

  6.   

    提示错误,灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))
      

  7.   

    这应该是一个 非标准com控件 
      

  8.   

    [DllImport("Interop.FKAttendLib.dll", EntryPoint = "ConnectNet")]
            public static extern int ConnectNet(int nMachineNumber, string strIpAddress, int nPort, int nTimeOut, int nProtocolType, int nNetPassword, int nLicense);
    无法在 DLL“Interop.FKAttendLib.dll”中找到名为“ConnectNet”的入口点。如果用这种方式调用,又出现这种情况
      

  9.   

    VB写的DLL是标准的COM,不能使用DllImport调用
      

  10.   

    那就卡壳了,不知道出啥问题,难道要写一个exe程序在服务器端实时读取考勤机?
      

  11.   

    如果是ocx的调用 有这方面的资料或使用实例可以提供一下吗
      

  12.   

    <OBJECT 
        classid="clsid:827B9BAA-D3CC-41AD-A0A8-5F383261B792" 
        id="FKAttend"
        class="FKAttendLib.FKAttendClass" VIEWASTEXT runat="server"></OBJECT>
    调用
    <script language="C#" runat="server">      
    void Page_Load(Object sender, EventArgs e)       
    {
                    ...
                    string ip = "192.168.111.211";
                    FKAttend.ConnectNet(1, ip, 5005, 5000, 0, pwd, license);
                    ...
    }
    </script>这样也是出现 灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))