【问题标题】:Why does my DLL not seem to be called?为什么我的 DLL 似乎没有被调用?
【发布时间】:2013-03-13 01:03:01
【问题描述】:

我有一个 COM DLL,用 Delphi 编码。当网页在 MS IE 中加载时(通过页面上的 soem JavaScript),应该通过 Active X 控件调用它。

顺便说一句,这一切都适用于现有的串行端口接口,但我正在重新编码 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.dllregsvr32.exe my_dll.dll这两个系统都宣布成功
  • 我搜了一下,c:\Windows下只有my_dll.dll的一个副本
  • 并且它具有正确的大小和日期/时间
  • 我的%path% 对于系统来说是%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;,对于用户来说是空的

知道我做错了什么吗?或者我该如何追踪它?

【问题讨论】:

  • 如何在 MSIE 中加载 ActiveX 控件?您有网页的 HTML 或 VBScript 代码吗?
  • @PrahladYeri +1 JavaSCript

标签: windows web-applications dll activex


【解决方案1】:

如果您通过 javascript 在网页中加载 ActiveX 控件,则必须将控件打包以进行 Web 部署。请参阅此示例以了解如何在您的 javascript 中执行此操作并检查您是否已正确完成:

Calling Activex Control 's Functions from javascript

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

【讨论】:

  • +1 感谢您的回复。很抱歉延迟回复您。我不确定我是否遵循您提到的问题。在调用regsvr32 之后,我的注册表中有HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0004C7F4-BCCC-4476-8C0C-F045E2E0A1F7}HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{30F57A6B-D06D-4640-B19B-34A70EB64181} 以及对标识我的类型库的GUID 的更多引用。我需要做更多的事情吗?
  • 你做了哪些代码更改来从 USB 读取它?不需要,因为应用程序不需要知道底层硬件,它只需要一个对象引用来后期绑定。
猜你喜欢
  • 1970-01-01
  • 2018-03-05
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多