如题

解决方案 »

  1.   

    设置一个全局变量
    var
      isEnd:Boolean;
    =====================
    while(not isEnd) do
    begin
      // ....
      Application.ProcessMessages;
    end;
    =====================
    事件发生后设isEnd:=true;
      

  2.   

    刚好看到过:   while true do
       begin
         //your code
       end;在另一个函数中,使用
       waitsingleobject(进程ID,时间)
      

  3.   

    :::如何实现执行一个程序并等待它完成::: 
    使用createprocess函数创建进程调用应用程序,同时使用waitforsignleobject等待进程结束。在此处理所给为32位版本。
    function ExecAndWait(const Filename, Params: string; WindowState: word):
    boolean;
    var
    SUInfo: TStartupInfo;
    ProcInfo: TProcessInformation;
    CmdLine: string;
    begin
    CmdLine:=filename+' '+params;FillChar(SUInfo, SizeOf(SUInfo), #0);
    with SUInfo do
    begin
    cb := SizeOf(SUInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := WindowState;
    end;Result := CreateProcess(NIL, PChar(CmdLine), NIL, NIL, FALSE,
    CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, NIL,
    PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);
    if Result then
    begin
    //等待应用程序结束
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    //删除句柄
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
    end;
    end;
     
      

  4.   

    使用CALLBACK不就行了!function A (a,b,c,procCallBack:FARPROC)
    begin
      ....
      //your code above;  //At Last:  procCallBack();
    end;// the call back function
    procedure procCallBack;stdcall;
    begin
      
    end;