Einzelnen Beitrag anzeigen

em-sigma

Registriert seit: 8. Jul 2004
38 Beiträge
 
Delphi 2005 Personal
 
#1

Wie ruft man POVRAY aus einem Programm heraus auf ?

  Alt 7. Dez 2004, 14:45
Hallo zusammen,

ich bin gerade dabei, einen Material-Editor für POV-Ray zu basteln (ja, ich weiß gibt's schon tausendfach, aber es ist nicht so einfach, eine nette Aufgabe zu finden, bei der man auch was lernen kann).

Bisher habe ich den Aufruf über CreateProcess gemacht (siehe Code). Aber das hat den Nachteil, daß man warten muß, bis das Bild fertig ist, was manchmal ganz schön lange dauert).
Außerdem verwende ich hier eine DOS-Version von POV-Ray, die es aber nur bis zur Version 3.1g gibt (inzwischen gibt es V3.6 für Windows). Diese alte Version hat den Vorteil, daß man einen Programmlauf per Kommandozeile abwickeln kann.

Jetzt die Frage: Weiß jemand, wie ich etwas Entsprechendes mit der Windows-Version zustande kriege? Es sollte kein Fenster aufpoppen. Wie stelle ich fest, daß der Prozess fertig ist ? (Beim Starten von POV-Ray erscheint immer ein Begrüßungsschirm, also sollte das Programm möglichst nur einmal gestartet werden)

Hilfe!

Vielen Dank schon mal im Voraus,

Greetings, em-sigma

Delphi-Quellcode:
procedure TMaterialEditor.ButtonPreviewClick(Sender: TObject);
var
   StartUpInfo:TStartUpInfo;
   ProcessInfo:TProcessInformation;
begin
   FillChar(StartUpInfo,SizeOf(TStartUpInfo),0);
   StartUpInfo.cb:=SizeOf(TStartUpInfo);
   StartUpInfo.dwFlags:=STARTF_USESHOWWINDOW;
   StartUpInfo.wShowWindow:=SW_HIDE;

   If CreateProcess(nil,
                    PChar('runpov.bat +imy.pov -d'),
                    nil,
                    nil,
                    False,
                    NORMAL_PRIORITY_CLASS,
                    nil,
                    nil,
                    StartUpInfo,
                    ProcessInfo)
      then begin WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
   end;

   TGAImage.LoadFromFile('my.tga');
end;
  Mit Zitat antworten Zitat