Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2008, 22:18   #1
WOLFak
Форумчанин
 
Аватар для WOLFak
 
Регистрация: 30.12.2007
Сообщений: 180
Печаль снова завершить процесс

я использую процедуру для завершения текущего процесса
это текущий процесс - вроде бы сама программа, а мне надо тот процесс завершить который не эта программа, а в котором я находился до запуска этой программы
^_^

Последний раз редактировалось WOLFak; 20.01.2008 в 22:23.
WOLFak вне форума Ответить с цитированием
Старый 20.01.2008, 22:41   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А теперь потрудитесь перевести на русский...
Просто иначе мы вам ничем помочь не сможем.
mihali4 вне форума Ответить с цитированием
Старый 20.01.2008, 23:00   #3
WOLFak
Форумчанин
 
Аватар для WOLFak
 
Регистрация: 30.12.2007
Сообщений: 180
По умолчанию

как тут код проги вставить?
вот короче
Код:
procedure KillProgram(ClassName: pchar; WindowTitle: pchar);
const
  PROCESS_TERMINATE = $0001;
var
  ProcessHandle : THandle;
  ProcessID: Integer;
  TheWindow : HWND;
begin
  TheWindow := FindWindow(PChar(ClassName), PChar(WindowTitle));
  GetWindowThreadProcessID(TheWindow, @ProcessID);
  ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
  TerminateProcess(ProcessHandle,4);
end;
с какими параметрами ее вызывать и так чтобы вот пример:
я запустил Nero а моя прогграмма должна завершить бесприковловно этот Nero вырубить его
^_^
WOLFak вне форума Ответить с цитированием
Старый 20.01.2008, 23:07   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Чтобы оформить кусок приведенного текста в виде кода:
- жмем значок "#" на формочке ввода ответа на форуме;
- вводим (или вставляем текст кода).
По сути. Код кодом, но лучше, если вы словами опишете, что у вас есть и что вы хотите получить...
Поверьте, это гораздо легче для нас, нежели пытаться понять это же из вашего неправильного (по вашему же утверждению!) кода...
mihali4 вне форума Ответить с цитированием
Старый 20.01.2008, 23:17   #5
WOLFak
Форумчанин
 
Аватар для WOLFak
 
Регистрация: 30.12.2007
Сообщений: 180
По умолчанию

это не мой код и все там правильно
вообщем задумка такая:
в определенное время вырубить игру в которую я в это время буду играть(любую игру) эта игра может быть любой
^_^
WOLFak вне форума Ответить с цитированием
Старый 20.01.2008, 23:19   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Убьёт всё что хочешь вот такой коктейл молотова.
Код:
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;
  

function EnableDebugPrivilege(const Value: Boolean): Boolean;
const
  SE_DEBUG_NAME = 'SeDebugPrivilege';
var
  hToken: THandle;
  tp: TOKEN_PRIVILEGES;
  d: DWORD;
begin
  Result := False;
  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) then
  begin
    tp.PrivilegeCount := 1;
    LookupPrivilegeValue(nil, SE_DEBUG_NAME, tp.Privileges[0].Luid);
    if Value then
      tp.Privileges[0].Attributes := $00000002
    else
      tp.Privileges[0].Attributes := $80000000;
    AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), nil, d);
    if GetLastError = ERROR_SUCCESS then
    begin
      Result := True;
    end;
    CloseHandle(hToken);
  end;
  end;
Вызов функции например таков:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
EnableDebugPrivilege(true);
KillTask ('Имя процесса');
EnableDebugPrivilege (false);
end;
Валит любой процесс напивал!

Последний раз редактировалось FaTaL; 20.01.2008 в 23:23.
FaTaL вне форума Ответить с цитированием
Старый 20.01.2008, 23:24   #7
WOLFak
Форумчанин
 
Аватар для WOLFak
 
Регистрация: 30.12.2007
Сообщений: 180
По умолчанию

KillTask ('Имя процесса');
проблемка имя мне не известно
любой процесс в котором я нахожусь надо валить
но все равно большое спасибо я этот код где нибудь тоже использую :-)
^_^
WOLFak вне форума Ответить с цитированием
Старый 21.01.2008, 17:36   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

Этот код " function KillTask(ExeFileName: string): integer; " по имени файла выгружает процесс или по Заголовку или Классу. Смущает ExeFileName.
Alter вне форума Ответить с цитированием
Старый 22.01.2008, 08:56   #9
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от Alter Посмотреть сообщение
Этот код " function KillTask(ExeFileName: string): integer; " по имени файла выгружает процесс или по Заголовку или Классу. Смущает ExeFileName.
Нажми CTRL+ALT+DEL и там во вкладке процессов найдёшь именно это имя процесса которое надо вписать, например KillTask ('svchost.exe');
FaTaL вне форума Ответить с цитированием
Старый 22.01.2008, 18:07   #10
WOLFak
Форумчанин
 
Аватар для WOLFak
 
Регистрация: 30.12.2007
Сообщений: 180
По умолчанию

TLhelp32
нао в USES прописать иначе ошибка
^_^
WOLFak вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Завершить приложения EdNovice Общие вопросы Delphi 4 16.05.2008 08:06
Завершить процесс doniyor Win Api 2 15.05.2008 21:52
Как завершить процесс, зная его имя Никки Win Api 6 14.01.2008 14:04
Как програмно завершить работу компьютера? Bill Gates Win Api 4 07.01.2008 11:35
Как корректно завершить цикл? Iren Microsoft Office Excel 4 02.11.2007 09:58