为什么我的DLL似乎没有被调用?

问题描述:

我有一个COM DLL,用Delphi编码。当网页加载到MS IE中时(通过页面上的soem JavaScript),它应该通过Active X控件进行调用。为什么我的DLL似乎没有被调用?

顺便说一句,这一切工作正常,与现有的串行端口接口,但我重新编码DLL从USB读取;其他所有的东西都没有变化。

它在Delphi IDE中正常工作,但不是“在现场”。活动X控件应该请求它从USB端口读取一些输入,然后将其发送到网页。

从USB设备读取工作,因为我可以打开记事本,并看到正在写入的值。

该DLL将显示一个表单和一个对话框,并将写入系统调试跟踪。由于我在MS IE中加载网页时看不到这些内容,因此我认为我们可以假设Aective X控件不调用DLL。

  • 在MS IE中,我启用了所有的Active X选项。
  • 在C:\ Windows \ System32下(这相当于C:\ WINDOWS \ SysWOW64中),我有regsvr32.exe -u my_dll.dll然后regsvr32.exe my_dll.dll两者宣布该系统是成功的
  • 我搜索,有且只有一个副本的my_dll.dll下的C:\ WINDOWS
  • ,它具有正确的大小和日期/时间
  • %path%%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;系统和空用户

任何想法,我做错了什么?或者我可以怎样去追踪它?

+1

如何在MSIE中加载ActiveX控件?你有没有任何HTML或VBScript代码的网页? – 2013-03-23 10:41:47

+0

@PrahladYeri +1 JavaSCript – Mawg 2013-03-24 01:12:33

如果您通过JavaScript在网页中加载ActiveX控件,则必须打包Web部署控件。见这个例子如何做到这一点在你的JavaScript,检查你是否得当与否:

Calling Activex Control 's Functions from javascript

一旦你正确地做上述的事情,并在IE中打开你的网站时,网页会至少“加载”ActiveX控件。除此之外,您可以在Delphi代码中显示消息框或写入日志以追踪实际的编码问题。

+0

+1并感谢您的回复。对不起,延迟回到你身边。我不确定我是否按照你引用的问题。在我的注册表'HKEY_CLASSES_ROOT \ Wow6432Node \ CLSID \ {0004C7F4-BCCC-4476-8C0C-F045E2E0A1F7}'和'HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ TypeLib \ {30F57A6B-D06D-4640-B19B-34A70EB64181}中调用'regsvr32'后, '和几个更多的引用标识我的typelib的GUID。我需要做更多的事吗? – Mawg 2013-03-27 06:45:58

+1

你做了什么代码更改来从USB读取它?因为应用程序不需要知道底层硬件,所以它只需要一个对象引用来延迟绑定。 – 2013-03-27 09:00:52

+0

+1这是一个完整的重写 – Mawg 2013-03-29 00:18:24