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;