私はDelphiのActiveXコントロールに問題があります。私は、ActiveXライブラリを作成し、次にActiveXフォームを作成します。私は1つの関数を定義し、この関数を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.
誰でもこの問題を助けることができます。私は公開されたセクションの公開セクションでメソッドを成功させずに移動しようとします。で要素を取得するために
var obj = $("#GetDocsActiveX");
のjQueryの行(または類似のライブラリ)のようになります。ここ
EDIT は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オブジェクトをアクティブにできることを確認しましたか? Btw、あなたのj'scriptが正しいclsidを使用しているかどうかをあなたが投稿したものから読者に伝えることはできません。 – MartynA
私はregsvr32でActivexを登録し、同じエラーが発生します。 – plamen