就是说本来已经完成的一个小软件,是mdi窗体的,现在因为这个软件是放在网上让别人下载使用的,但是又经常需要对这个软件进行更新,包括主窗口界面也需要更新,所以想添加一个功能,就是先检查是否有更新,如有更新则先下载更新,然后才执行主程序,所以我的想法就是把原来的程序做成dll提供一个接口由另外的程序调用,那个调用的程序来完成检查更新这个dll,呵呵不知道我说明白了没?不知道这个方法可不可行,希望大家给点建议。

解决方案 »

  1.   

    哈那太好了,那么该如何做呢,我现在正在做,然后有很多问题,那就请继续关注吧 :)首先的问题就是新建了一个dll的工程,把原来程序的form、unit都加了进来,编译通过,那么该如何定义这个接口呢,如何让主程序直接调用这个接口就能够打开原来的mdi主窗口,实现原来的功能界面呢?能否给段简单的代码,多谢!
      

  2.   

    ////////////////////////////////////////////////
    // dll中的代码
    ////////////////////////////////////////////////
    library UseDll;uses
      Windows,Variants,StdCtrls,
      Messages,
      SysUtils,
      Classes,
      Graphics,
      Controls,
      Forms,
      Dialogs,
      Form_Unit in 'Form_Unit.pas' {fmMain},
      uChild in 'uChild.pas' {fmChild};procedure LoadForm(mainApp: TApplication); stdcall;
    begin
        application := mainApp;
        application.CreateForm(TfmMain,fmMain);
    end;{$R *.res}
    exports
        LoadForm;
    begin
    end.
    ////////////////////////////////////////////////////////////////////////////////////////////////
    //主程序中的代码
    ////////////////////////////////////////////////
    program P111;uses
      Forms,
      u111 in 'u111.pas' {Form1};procedure LoadForm(mainApp: TApplication); stdcall;external 'useDll.dll';{$R *.res}begin
      Application.Initialize;
      LoadForm(application);
      //Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    ////////////////////////////////////////////////以上分别为dll中的代码和主程序中的代码,dll中封装了一个fsMDIForm和一个fsMDIChild,执行主程序确实创建了fsMDIForm并且fsMDIForm中的打开子窗口的事件也能正确执行,现在问题是当关闭主窗口时出现错误,请帮忙分析一下
      

  3.   

    to stanely(俺是邢她汉子):
        两个进程?可否讲的具体些,我对进程不大熟悉,给个思路先啦 :)
      

  4.   

    哈哈,我才搞明白stanely(俺是邢她汉子)的意思,原来就是两个exe呀,新做一个程序检查有无更新,完了直接调用执行先做好的那个可执行程序就行啦,哈哈如此简单!真是晕!谢谢各位,虽然遇到的问题没解决,但主要问题——更新升级已经解决了,结帐喽!