多个exe的delphi工程问题(100分)

  • 主题发起人 主题发起人 gxx
  • 开始时间 开始时间
G

gxx

Unregistered / Unconfirmed
GUEST, unregistred user!
使用delphi多人开发时,可以按功能模块划分为多个exe文件,每个人开发一部分,最终用
一个主程序串起来,形成一个统一的软件。我在实际应用中遇到一个问题,不知如何解决,
请高手指点:
使用CreateProcess来创建进程,使用WaitForSingleObject来控制不再允许访问主程序,就象
是模态弹出的对话框一样,但如果拖动弹出的程序窗口到主程序窗口,再离开后,主程序
窗口不能自动重画,留下一片空白,这个问题如何解决呢?
 
真的没人知道?
提前一下
 
偶也不会,再提前一下
 
我们也在做一个工程时做了好多EXE
不知怎么办,包括权限问题,不知有
没有更好的解决方案!谢谢!
 
这个可能是线程的问题。
帮你up
 
1。最好用 Dll ,dll 容易控制的多。
2。如果一定要用 Exe 那么,就多加几个参数,通过参数管理
 
在主窗口的onactive事件里面paint
 
应该使用线程,下面是一个简单的例子:
代码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TRunThread = class(TThread)
  private
    FMainForm: TForm1;
    FFileName: String;
  public
    constructor Create(MainForm: TForm1; FileName: String); overload;
    procedure Execute; override;
    end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TRunThread.Create(MainForm: TForm1; FileName: String);
begin
  inherited Create(False);

  FFileName := FileName;
  FMainForm := MainForm;
  FreeOnTerminate := True;
end;

procedure TRunThread.Execute;
var
  StartUpInfo: TStartUpInfo;
  ProcessInfo: TProcessInformation;
  ExitCode: LongWord;
begin
  FillChar(StartUpInfo, SizeOf(StartUpInfo), 0);
  StartUpInfo.cb := SizeOf(StartUpInfo);
  if (CreateProcess(PChar(FFileName), nil, nil, nil, FALSE, 0, nil, nil, StartUpInfo, ProcessInfo)) then
    begin
    try
      CloseHandle(ProcessInfo.hThread);
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
      FMainForm.Enabled := True;
    finally
      CloseHandle(ProcessInfo.hProcess);
      end
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  T: TRunThread;
begin
  T := TRunThread.Create(Self, 'c:/winnt/notepad.exe');
  Enabled := False;
end;

end.
 
结束!
其实我不觉得多个EXE文件组成一个工程好,还是DLL比较好,但听说很多公司在多人开发时
都用这个办法,以为他们有什么绝技,看来也没什么好办法.
 
后退
顶部