这相当于Delphi上的vb.NET“Interop用户控件”?

时间:2014-04-12 15:30:18

标签: vb.net delphi activex

林'尝试使用从第三方应用程序中获取的事件/方法/过程来创建应用程序。 此应用需要是active X

我在VB.NET上有一个工作示例,我需要在Delphi上做同样的事情。

vb.net单元以:

开头
<ComClass(InteropUserControl.ClassId, InteropUserControl.InterfaceId, InteropUserControl.EventsId)> _
Public Class InteropUserControl

这对DELPHI来说是否完全必要?这只是为了在Windows上注册COM类吗?

此外,使用的功能是:

Public Event msgPlugIn(ByRef Msg As String, ByRef MsgResponse As String)

以后再打电话:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Msg As String
    Dim Response As String = ""
    Msg = "<ID><infoRequest/></ID>"
    RaiseEvent MsgPlugIn(Msg, Response)
    rtb1.Text = Response
    //rtb1 is a regular label
End Sub

这是普通Button的Onclick吗?

我需要在Delphi中完成这项工作,但是我尝试了所有内容,Automation ObjectCOM Object ..但第三方应用并没有做任何事情。

新信息:

我创建了一个活动库并添加了一个COM OBJECT并创建了一个过程:

    unit DataExchange;

    {$WARN SYMBOL_PLATFORM OFF}

    interface

uses
  Windows, ActiveX, Classes, ComObj, TEST_2_TLB, StdVcl, dialogs;

type
  TDataExchange = class(TTypedComObject, IDataExchange)
  protected
    procedure MENSAJE(out DATA: WideString); stdcall;
  end;

implementation

uses ComServ;


procedure TDataExchange.MENSAJE(out DATA: WideString);
begin
  showmessage(DATA);
end;

initialization
  TTypedComObjectFactory.Create(ComServer, TDataExchange, Class_DataExchange,
    ciMultiInstance, tmApartment);
end.

我创建一个客户端来读取这个dll这样调用它:

procedure MENSAJE(out DATA: WideString); external 'TEST__2.ocx';

procedure TForm2.btn1Click(Sender: TObject);
var
texto : WideString;
begin
 texto := edt1.Text;
  MENSAJE (texto);
end;

然后当我执行客户端时出现错误:

the Procedure entry point {MENSAJE {1}}

如果我直接在库单元上创建此过程,则可以正常工作,如下所示:

could not be located in the dynamic library TEST__2.ocx

问题是,如果我在单元中创建过程,我就会编写它。在COM OBJECT中,我通过ridl文件创建了它,为接口添加了一个方法。

1 个答案:

答案 0 :(得分:0)

ActiveX库中的 COM对象是向外部应用公开功能的正确方法。您的测试客户端失败,因为您根本没有加载COM对象,您尝试访问独立函数,但实际上没有。您必须使用 regsvr32.exe 注册已编译的DLL,然后客户端应用程序可以使用CoCreateInstance/Ex()在需要时实例化COM对象,在其上调用方法,并为其分配事件处理程序

Delphi(和C ++ Builder)的一个更好的COM教程是http://www.techvanguards.com,恕我直言。