Hi folks.

I'm trying to launch a new process from a running program. This runs on a WinCE hand held computer. To achieve this I do in the calling program:

with TProcess.Create(nil) do try
  CommandLine := wNewName;
  Options := [poNewProcessGroup];
  Logger.Add(Format('  Pocket program launching "%s"', [wNewName]), 0);
  try
    Execute;
  except
    on E: Exception do begin
      Msg := Format(DM.Constante[122], [E.Message]);
Logger.Add(Format(' Pocket program launching error "%s"', [E.Message]), 0);
      Result := False;
      Exit
    end;
  end;
finally
  Free
end;

The only thing I get is a "87" exception code: The parameter is incorrect.
Got the same error if I use CreateProcess, like:
function LaunchProcess(const APath: String): Boolean;
var
  si: TSTARTUPINFO;
  pi: TPROCESSINFORMATION;
  Msg: String;
  Error: Integer;
  {$IFDEF WINCE}
  wPath: WideString;
  {$ELSE}
  wPath: String;
  {$ENDIF}
begin
  FillChar(si,SizeOf(TSTARTUPINFO),#0);
  FillChar(pi,SizeOf(TPROCESSINFORMATION),#0);
  si.cb := SizeOf(TStartupInfo);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := SW_SHOWDEFAULT;
  wPath := APath;
  {$IFDEF WINCE}
Result := CreateProcess(PWideChar(wPath), nil, nil, nil, False, CREATE_NEW_PROCESS_GROUP, nil, nil, si, pi);
  {$ELSE}
Result := CreateProcess(nil, PChar(APath), nil, nil, False, CREATE_NEW_PROCESS_GROUP, nil, nil, @si, @pi);
  {$ENDIF}
  if not Result then begin
    Error := GetLastError;
Logger.Add(Format(' Pocket program "%s" launching error %d:"%s"', [APath, Error, SysErrorMessage(Error)]), 0);
  end
end;

On a Win32 (Vista) platform it runs without problem using either TProcess or CreateProcess. I cannot use ExecuteProcess because after launching the first program has to terminate. It is all in an automatic update process.

Any help would be appreciated.

Antonio.


--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to