我遇到了Delphi ActiveX控件问题。我创建一个ActiveX库,然后创建一个ActiveX窗体。我定义了一个函数,我想从JavaScript调用这个函数。但我不能。 JavaScript引发错误:“对象不支持属性或方法'Method1'”。无法从JavaScript调用Delphi ActiveX方法
这是HTML代码:
<OBJECT id="GetDocsActiveX" classid="clsid:A03962E6-6030-46C0-988D-ADE26BC4BACD" codebase="GetDocs.ocx#version=1.0">
<PARAM NAME="Color" VALUE="13417386">
</OBJECT>
这是Delphi代码* .ridl文件
interface IGetDocs: IDispatch
{
[id(0x000000E8)]
HRESULT _stdcall Method1(void);
};
这是* _TLB.pas文件
IGetDocs = interface(IDispatch)
['{8F2BF1C6-98A5-4D6B-A43E-890698A3C91D}']
procedure Method1; safecall;
end;
,这是带执行文件
unit GetDocsU;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActiveX, AxCtrls, GetDocs_TLB, StdVcl, Vcl.StdCtrls, ShellApi, Vcl.XPMan,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
type
TGetDocs = class(TActiveForm, IGetDocs)
protected
procedure Method1; safecall;
public
{ Public declarations }
procedure Initialize; override;
end;
implementation
uses ComObj, ComServ;
{$R *.DFM}
procedure TGetDocs.Method1;
begin
MessageDlg('HI from active x', mtInformation, [mbOK], 0, mbOK);
end;
end.
任何人都可以帮助解决这个问题。我试图在公开部分的公开部分中移动方法而没有成功。
编辑 这里是Java脚本
<script type="text/javascript">
try {
var obj = $("#GetDocsActiveX");
if (obj) {
obj.Method1();
} else {
alert("Object is not created!");
}
} catch (ex) {
alert("Some error happens, error message is: " + ex.message);
}
</script>
您是否检查过可以使用'GetOleObject'或'GetComObject'从独立的Delphi应用程序激活ActiveX对象?顺便说一句,读者不能从你发布的内容中知道你的j'script是否使用了正确的clsid。 – MartynA
我用regsvr32注册Activex并得到相同的错误。 – plamen