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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2011, 12:17   #1
kholoshchak
Пользователь
 
Регистрация: 17.03.2011
Сообщений: 43
По умолчанию Закрыть чужую программу

Привет всем!!!!!!!!
Помогите пожалуйста. Перебрал весь форум но ничего не нашел, а что нашел то не работает.

С помощью кода я получил список запущенных программ в ListBox1

var
wnd: hwnd;
buff: array [0..127] of char;
begin
ListBox1.Items.Clear;
wnd := getwindow(handle, gw_hwndfirst);
while wnd <> 0 do
begin // Не показываем:
if (wnd <> application.handle) // Собственное окно
and iswindowvisible(wnd) // Невидимые окна
and (getwindow(wnd, gw_owner) = 0) // Дочерние окна
and (getwindowtext(wnd, buff, sizeof(buff)) <> 0) then
begin
getwindowtext(wnd, buff, sizeof(buff));
ListBox1.items.add(strpas(buff));
end;
wnd := getwindow(wnd, gw_hwndnext);
end;
ListBox1.itemindex := 0;
end;

в переменную nameprog сохраняю имя одной запущенной программы из списка нескольких

var
i:integer;
nameprog:string;
begin
i:=ListBox1.ItemIndex;
nameprog:= ListBox1.Items.Strings[i];

ВОПРОС: как программно завершить работу программы зная только имя находящееся в переменной nameprog?

За ранее спасибо!!!
kholoshchak вне форума Ответить с цитированием
Старый 27.04.2011, 15:06   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Может это поможет (взято из DW)
Код:
KillTask('notepad.exe');
KillTask('iexplore.exe');

//*-*-*-*-*

uses
  Tlhelp32, Windows, SysUtils;

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;
SERG1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запустить чужую программу со своей dll библиотекой или внедрить в уже существующий процесс Человек_Борща Общие вопросы Delphi 5 23.01.2011 21:20
Свернуть чужую программу в трей grafgrial Общие вопросы Delphi 6 18.06.2010 19:27
Закрыть программу на C# Olaf Общие вопросы C/C++ 3 14.12.2009 13:03
Перетаскивание на чужую программу mutabor Win Api 2 03.07.2008 20:33
закрыть программу Var17 Общие вопросы Delphi 1 20.12.2007 10:06