我遇到了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