Hallo Leute!
Ich benötige eure Hilfe bezüglich eines Problems (war zu erwarten oder? ich habe es trotzdem mal so formuliert
Ich möchte einen thread so lange anhalten, bis eine Anwendung die über ihn gestartet wurde wieder beendet ist.
Das hat soweit auch absolut super funktioniert, aber wenn es auf der GUI irgendwelche Veränderungen gibt, soll die gestartete Applikation (auf deren Ende gewartet wird) bereits vorzeitig terminiert werden.
Ich bekomme etwa 1000000 Access Violations uns weiß eigentlich auch warum

, aber nicht wie ich es anders machen kann.
Ich muss noch irgendetwas machen bevor ich den Process terminieren kann.
Wichtig ist, dass ich auch GENAU DIE INSTANZ des Programmes Terminiere die in exinfo ist.
Liegts vielleicht daran ,dass ich keinen ExitCode angegeben habe?
Es folgt mein Codefetzen
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| procedure Download.StartAndWait(FileName: string; Params: string; Name : string); var exInfo: TShellExecuteInfo; Ph: DWORD; begin FillChar(exInfo, SizeOf(exInfo), 0); with exInfo do begin cbSize := SizeOf(exInfo); fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT; Wnd := GetActiveWindow(); ExInfo.lpVerb := 'open'; ExInfo.lpParameters := PChar(Params); lpFile := PChar(FileName); nShow := SW_HIDE; end; if ShellExecuteEx(@exInfo) then Ph := exInfo.HProcess else begin ShowMessage(SysErrorMessage(GetLastError)); Exit; end; while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do begin if Abgebrochen then begin TerminateProcess(Exinfo.HProcess,Null); if fileexists(form6.SavetoPath+Name+'.flv') then deletefile(form6.SaveToPath+Name+'.flv'); if fileexists(form6.SavetoPath+Name+'.avi') then deletefile(form6.SaveToPath+Name+'.avi'); if fileexists(form6.SavetoPath+Name+'.mp4') then deletefile(form6.SaveToPath+Name+'.mp4'); if fileexists(form6.SavetoPath+Name+'.mp3') then deletefile(form6.SaveToPath+Name+'.mp3'); break; exit; end; Application.ProcessMessages; end; CloseHandle(Ph); end; |
Moderiert von
Narses: Topic aus Dateizugriff verschoben am So 07.09.2008 um 23:08