提示:这个听起来可能很复杂,因为我试图提供尽可能多的信息,但我怀疑我只是想让别人告诉我“是的,你是对的。”
在这个可追溯到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似乎返回一个字符串。
这听起来是对的吗?还有其他评论(除了要学习的课程)吗?
答案 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:
- 获得
Visual Studio,启动它并转到meny Tools-&gt; OLE / COM对象查看器。 这称为oleview.exe,也可以从windows sdk
在该应用程序中,选择meny File-&gt; View Typelib ..
选择COM dll,您将看到Typelib。
选择meny文件 - &gt;另存为。使用适当的名称保存。对于 例如“mycom.idl”
- 醇>
使用idl-filname作为参数启动midl.exe或mktyplib.exe。 “MIDL mycom.idl“
阅读MSDN以获取有关midl和的更多信息 MKTYPLIB