Bonjour,

je suis entrain de développer une petite appli pour convertir mes enregistrements TNT en XVID. Enfin bref.
J'aimerais créer un thread pour lancer un programme externe.
Ma question est que dois-je mettre dans la procedure thread.execute ?

Alors avant d'utiliser un thread, je lançais mon appli externe comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
function tform1.LanceAppliAttenteFin(NomFichier:string):boolean;
var
  StartInfo : TStartupInfo;
  ProcessInformation : TProcessInformation;
begin
  result:=true;
  ZeroMemory(@StartInfo, sizeof(StartInfo)); // remplie de 0 StartInfo
  StartInfo.cb:=sizeof(StartInfo);
  if CreateProcess(nil,PChar(NomFichier),nil,nil,true,0,nil,nil,StartInfo,ProcessInformation)
then
    WaitForSingleObject(ProcessInformation.hProcess, INFINITE)// attend que l'application désignée par le handle ProcessInformation.hProcess soit terminée
  else result:=false;
end;
 
Procedure tform1.demuxmpg;
var s:string;
  t:boolean;
begin
  s:='"C:\Program Files\Java\jre1.6.0_01\bin\java.exe" -jar "'+editprojectx.Text+'" "'+editsource.Text+'"';
  t:=lanceappliattentefin(s);  //<= Ici
end;
Là tout larche bien, mais ce programme qui s'éxecute met entre 1 et 10 minutes pour arriver à ses fins et bloque donc mon appli pdt de temps !

Je voulais donc lancer ceci dans un thread.

Donc que dois-je mettre dans mon thread.execute ?
Car je dois dire que je suis un peu perdu !

Merci pour votre aide.