传统的activeX控件调用DLL函数 - 我需要帮助

时间:2010-09-01 01:17:41

标签: asp.net vb.net dll activex

提示:这个听起来可能很复杂,因为我试图提供尽可能多的信息,但我怀疑我只是想让别人告诉我“是的,你是对的。”

在这个可追溯到2002年的遗留系统中,用户访问网页并使用RFID阅读器读取标签号,然后将其写入网页上的输入栏。

阅读器附带的唯一软件是自定义DLL,nop .exe。

非常稀疏的文档坚持只使用MSIE并且禁用与ActiveX相关的所有安全性。

当我查看网页的来源时,我看到DLL中的函数调用。

现在,这是有趣的部分:我知道zilch关于ActiveX,我必须对DLL *做一个小改动但是* VB6源代码已经丢失,所以我猜我有从头开始重新创建(看似非常简单的)DLL - 本周。

反编译DLL向我展示了函数(locateReader,getTagVal,closeReader)。但是,通过反编译,我无法真正知道参数的数量或类型,也不知道返回值......如果有人知道API,他们拒绝分享它,但基本上它们似乎都已经在迷雾中丢失了公司破产的时间,被买了&出售,合并和demerged和初始DLL可能是由一个外部人写的,但没有人知道谁。

那么,我可以得到函数params&从ASP页面源输入?

我看到像

这样的东西
Reader = new ActiveXObject("<dllName>.Reader");
Reader.locateReader();
tagVal = Reader.getTagVal();
Reader.closeReader();

所以,我会说没有fn()s接受参数,closeReader不必返回任何东西;看起来locateReader也没有返回任何东西,所以我猜错误处理必须在DLL中(永远循环,弹出窗口要求连接读取器; getTagVal似乎返回一个字符串。

这听起来是对的吗?还有其他评论(除了要学习的课程)吗?

1 个答案:

答案 0 :(得分:2)

您放在此处的“代码”看起来像是对设备的直接调用。而getTagVal()似乎获得了RFID价值?由于这是一个COM(Active X)调用,你可以在一个简单的.net程序中调用它,看看你是否可以访问阅读器?如果可以的话,您可以将现有的功能包装在包装器中。

您需要尝试从组件生成TLB:

  

So, if you only have a COM dll, you need to get an idl-file from it

     
      
  1. Visual Studio,启动它并转到meny Tools-&gt; OLE / COM对象查看器。   这称为oleview.exe,也可以从windows sdk

  2. 获得   
  3. 在该应用程序中,选择meny File-&gt; View Typelib ..

  4.   
  5. 选择COM dll,您将看到Typelib。

  6.   
  7. 选择meny文件 - &gt;另存为。使用适当的名称保存。对于   例如“mycom.idl”

  8.   
  9. 使用idl-filname作为参数启动midl.exe或mktyplib.exe。 “MIDL   mycom.idl“

  10.         

    阅读MSDN以获取有关midl和的更多信息   MKTYPLIB