Главная / FAQ по Builder'у / 117 Как из своей программы закрыть...

117 Как из своей программы закрыть другую программу (T-mail например) ?



Можно послать окну сообщение WM_QUIT. Однако консольные проги вроде с этим
глючат.
Тмыл я валил через TerminateProcess. Однако при этом потом он в логе пишет
"восстановление после аварии"

  //сначала необходимо создать снимок состояния системы
  HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  HANDLE hProcess;
  //параметр TH32CS_SNAPPROCESS означает, что мы хотим узнать только информацию о процессах
  bool Result = true;
  bool Find = false;
  //опишем структуру, в которой будет храниться эта информация
  PROCESSENTRY32 *ProcEntry = new PROCESSENTRY32();
  AnsiString FileName;

  //Поиск запущенной программы T-Mail
  Process32First(hSnapshot, ProcEntry);
  FileName = ExtractFileName(StrPas(ProcEntry->szExeFile));
  if(FileName == "T-MAILNT.EXE")
  {
     hProcess = OpenProcess(PROCESS_TERMINATE, false,
ProcEntry->th32ProcessID);
     //Программа найдена
     Find = true;
     //Вырубаем ее
     if(TerminateProcess(hProcess, 0)) //Ok
     else //Косяк :-(
  }
  /* Вызываемые функции - булевские. Поэтому, когда вернется false, значит,
информации больше нет. => можно использовать цикл */

  while(Result)
  {
     Result = Process32Next(hSnapshot, ProcEntry);
     if(Result)
     {
        FileName = ExtractFileName(StrPas(ProcEntry->szExeFile));
        if(FileName == "T-MAILNT.EXE")
        {
           hProcess = OpenProcess(PROCESS_TERMINATE, false,
ProcEntry->th32ProcessID);
           //Программа найдена
           Find = true;
           //Вырубаем ее
           if(TerminateProcess(hProcess, 0)) //Ok
           else  //Косяк :-(
           break;
        }
     }
  }
  delete ProcEntry;
  //выгрузим из памяти системный снимок
  CloseHandle(hSnapshot);
  if(!Find) //Программа не найдена :-(

Sergey Kaluzhskiy 2:5055/89.27

Предыдущий вопрос   |  Список вопросов   |   Следующий вопрос

источник      На главную      by jenyok
Copyright © 2003 JTSOFT
Сайт управляется системой uCoz