MsgWaitForMultipleObjects返回访问被拒绝

| 我具有创建过程的跟随功能:
function .CreateProcess(aAppletPath: string; var aError : string; aProcessInfo: TProcessInformation): Boolean;
var
  StartInfo: TStartupInfo;
begin
  FillChar(StartInfo, SizeOf(TStartupInfo),#0);
  FillChar(aProcessInfo, SizeOf(TProcessInformation),#0);
  StartInfo.cb := SizeOf(TStartupInfo);
  if False then begin
    StartInfo.dwFlags := STARTF_USESHOWWINDOW;
    StartInfo.wShowWindow := SW_HIDE;
  end;
  if Windows.CreateProcess(nil, PChar(aAppletPath), nil, nil, False, CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, aProcessInfo) then begin
    Result := True;
    WaitForInputIdle(aProcessInfo.hProcess, oTimeOutSecs * 1000);
  end
  else begin
    Result := False;
  end;
end;
我有这种方法等待应用终止:
function WaitForProcessTerminate(aHandle: THandle) : Boolean;
var
  vResult : LongWord;
    Msg: TMsg;
  PHandles: Pointer;
begin
  vResult := 0;
  PHandles := @aHandle;
  PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE);
  while True do begin
    vResult := Windows.MsgWaitForMultipleObjects(1, PHandles^, False, oTimeOutSecs * 1000, QS_ALLINPUT);
    if vResult = WAIT_OBJECT_0 + 1 then begin
      if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
    end
    else begin
      Break;
    end;
  end;
  case vResult of
        WAIT_ABANDONED: Result := False;
        WAIT_OBJECT_0: Result := True;
        WAIT_TIMEOUT:   Result := False;
    else begin
        Result := False;
    end;
    end;
  if not Result then begin
    ShowMessage(SystemErrorMessage);
  end;
end;
问题在于,等待功能总是返回带有“ 3”消息的“ 2”。我究竟做错了什么?这段代码是Delphi 2010,而我正在调用的应用程序是一个Java应用程序。     
已邀请:
        没关系的家伙。是我的错功能:
function .CreateProcess(aAppletPath: string; var aError : string; aProcessInfo: TProcessInformation): Boolean;
应该:
function .CreateProcess(aAppletPath: string; var aError : string; var {should be var!!} aProcessInfo: TProcessInformation): Boolean;
我很抱歉。     

要回复问题请先登录注册