web下com控件调用问题

king_shadow 2010-10-09 09:45:03
考勤机的一个接口是dll的,在form下,可以用引入com控件的形式,在工具栏就可以把这个控件拉入窗体使用
那如果是web下,要怎么去调用?同样引入com控件,但是调用异常, web下,com控件应该怎么调用呢?
...全文
273 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
king_shadow 2010-10-09
  • 打赏
  • 举报
回复
<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))
king_shadow 2010-10-09
  • 打赏
  • 举报
回复
如果是ocx的调用 有这方面的资料或使用实例可以提供一下吗
king_shadow 2010-10-09
  • 打赏
  • 举报
回复
那就卡壳了,不知道出啥问题,难道要写一个exe程序在服务器端实时读取考勤机?
ZengHD 2010-10-09
  • 打赏
  • 举报
回复
VB写的DLL是标准的COM,不能使用DllImport调用
king_shadow 2010-10-09
  • 打赏
  • 举报
回复
[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”的入口点。

如果用这种方式调用,又出现这种情况

king_shadow 2010-10-09
  • 打赏
  • 举报
回复
这应该是一个 非标准com控件
king_shadow 2010-10-09
  • 打赏
  • 举报
回复
提示错误,灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))

ZengHD 2010-10-09
  • 打赏
  • 举报
回复
上面这些代码是自动生成的,不能修改
你还是看看fk.ConnectNet(1, ip, 5005, 5000, 0, pwd, license);提示什么错误吧
king_shadow 2010-10-09
  • 打赏
  • 举报
回复
这是我点转到定义里,看到的部份内容
[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();
king_shadow 2010-10-09
  • 打赏
  • 举报
回复
考勤机是有独立的IP,可以直接网线连接

接口是vb写的,然后生成dll

如果是com应该我那样的调用方式正常,ocx只能客户端调用那只能和js配合?
ZengHD 2010-10-09
  • 打赏
  • 举报
回复
1、想清楚你的考勤机是装在服务器还是客户端
2、想清楚你的考勤机接口是COM还是OCX,如果是COM,可以在服务器端调用(假如ASP中的ADODB),如果是OCX只能在客户端调用
king_shadow 2010-10-09
  • 打赏
  • 举报
回复
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下还没有调过这类的控件,哪位大大有时间给点这方面的资料或者解答一下,谢谢

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧