Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Убить Warcraft III !


Автор: Archon7th 9.6.2005, 20:58
переапробывал все методы что смог найти
... правда некоторые методв мне неудалось заставить работать вообще

воз и ныне там ... нужно просто его убить вообще ... проблема в том что когда в него играешь, его убить насильно не возможно, он спрашивает подтверждение: "Вы действительно хотите выйти?"

... на данный момент есть идея попробывать найти кнопку "ок" что бы нажать на запросе ... но пока не нашел ...

... плиз может кто знает ?

Автор: Quadr0 9.6.2005, 21:16
...

Автор: Girder 10.6.2005, 09:43
Archon7th завершай процесс... а еще надежнее закрывать потоки данного процесса(так как часто сам процесс защищают... а вот про потоки забывают smile )

Автор: Archon7th 10.6.2005, 10:09
Quadr0
неработающая теория .... я тоже так думал поначалу ...

Girder
а как с ними работать ?

М
 
Поиск...

Автор: SoWa 11.6.2005, 03:51
Вот так:
Код

function KillTask(ExeFileName: string): integer;
const
  PROCESS_TERMINATE=$0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  result := 0;

  FSnapshotHandle := CreateToolhelp32Snapshot
                     (TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle,
                                 FProcessEntry32);

  while integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
         UpperCase(ExeFileName))
     or (UpperCase(FProcessEntry32.szExeFile) =
         UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(OpenProcess(
                        PROCESS_TERMINATE, BOOL(0),
                        FProcessEntry32.th32ProcessID), 0));
    ContinueLoop := Process32Next(FSnapshotHandle,
                                  FProcessEntry32);
  end;

  CloseHandle(FSnapshotHandle);
end;

Использование:
Код

killTask('WarCraft3.exe');

Надо передавать ей имя ехе- шника, тогда все в порядке!

Автор: Archon7th 13.6.2005, 09:31
SoWa
Этот метод уже пробовал ... не работает ...

Автор: SoWa 15.6.2005, 08:23
А пробовал FindWindow('WarCraft3.exe'), а потом послать ему "WM_CLOSE"?

Автор: Rrader 15.6.2005, 10:13
Цитата

FindWindow('WarCraft3.exe')

Неправильный вызов функции. smile

Автор: Archon7th 15.6.2005, 15:28
вот что у меня .... не работает только с Вариком

Автор: CucagmuH 23.8.2005, 03:20
Цитата(Archon7th @ 15.6.2005, 15:28)
вот что у меня .... не работает только с Вариком

Я сам не програмер особо, а системный админ.
С Варой версии 1.18 были проблемы.
Решил через тулзу Винды
taskkill /f /im war3.exe
(Нах-ся в папке System32)
mail: [email protected]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)