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
| procedure TForm1.BitBtn9Click(Sender: TObject);
Var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
if ContainsText(Extention,'XLS') then
begin
if FileExists(IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName))+'ExcelToCSV.vbs') then
begin
ShowMessage('Le fichier sera converti en format CSV et rapatrié.');
FillChar(StartInfo,SizeOf(TStartupInfo),#0) ;
FillChar(ProcInfo,SizeOf(TProcessInformation),#0) ;
StartInfo.cb := SizeOf(TStartupInfo);
// Avec CreateProcess, on a un descripteur de processus et avec WaitForSingleObject, on vérifie quand le processus est terminé.
if CreateProcess(PChar(IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName))+'ExcelToCSV.vbs'),
PChar('"'+Fichier+'" "'+Fichier+'.csv"'), nil,nil, true, 0, nil, PChar(nil), StartInfo, ProcInfo) then
begin
// loop every 10 ms
// while WaitForSingleObject(ProcInfo.hProcess, 10) > 0 do
// begin
// Application.ProcessMessages;
// end;
WaitForSingleObject(ProcInfo.hProcess,INFINITE);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
...//... suite du code
end;
end;
end;
En vous remerciant par avance pour toute votre aide. |
Partager