Delphi调用vb写的Dll窗口出现:
“不能在该主机应用程序中从 ActiveX DLL、ActiveX 控件或“属性页”显示非模式窗体"别人写的dll,没法修改,调用模式窗体时就正常,咋办呢?而且显示了dll的模式窗体后,用本身dll的方法,在该模式窗体调用的非模式窗体,也会出现同样的错误。请高手们赐教,感激不尽!!

解决方案 »

  1.   

    我是用CreateOLEObject调用的。
    我自己用vb试了一下,做了个dll,用delphi调用,出现一样的错误。
    步骤如下1. 建一个dll工程,加入一个Form
    2. 在Class1中加入
       Function doSomething()
         Form1.Show
       End Function
    3. 生成dll文件并注册
    在Delphi里这样用:
    uses comObj;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      obj: OleVariant;
    begin
      obj := CreateOLEObject('工程1.clsMain');
      obj.doSomething;
    end;
      

  2.   

    更正一下,那个Class1我改名为clsMain
      

  3.   

    form1.show vnbmodal
      

  4.   

    Form1.Show VbModal注意在show的后面有一个空格。这个是显示模式窗口。