| 12
 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
 
 |  
bool __fastcall TForm1::LaunchUpx()
{
  AnsiString UpxLocation,FileToCompress;
  unsigned long ProcessResult;
  STARTUPINFO si;
  PROCESS_INFORMATION  pi;
  UpxLocation=FindUpx();
  if(UpxLocation.Length()==0)return false;
  ZeroMemory(&si,sizeof(si));
  FileToCompress=" -9 ";
  FileToCompress+=ExtractShortPathName(FileName);
  si.cb=sizeof(si);
  si.wShowWindow=SW_SHOW;
  bool result=CreateProcess(UpxLocation.c_str(),
                            FileToCompress.c_str(),
                            NULL,
                            NULL,
                            false,
                            CREATE_NEW_CONSOLE,
                            NULL,
                            NULL,
                            &si,
                            &pi);
 if(!result)  return false;
 do
   {
    Sleep(50);
    Application->ProcessMessages();
    GetExitCodeProcess(pi.hProcess,
                       &ProcessResult);
   }
   while (ProcessResult==STILL_ACTIVE);
   CloseHandle(pi.hThread);
   CloseHandle(pi.hProcess);
  return true;
} | 
Partager