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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2011, 16:59   #1
Strax
 
Регистрация: 25.12.2009
Сообщений: 7
Восклицание Закрыть процесс

Здравствуйте па сколько я новичок в программировании обращаюсь к вам

Задача состоит в том чтобы при запуске программы закрывался процесс firefox.exe

Я так полагаю нужно в форме1 в онкреат прописать а вот что я хотел бы спросить у вас.
Заранее благодарю
Strax вне форума Ответить с цитированием
Старый 07.01.2011, 17:04   #2
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Код:
uses
  Tlhelp32;

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;

procedure TForm1.Button1Click(Sender: TObject);
begin
  KillTask('firefox.exe');
end;
Lauri вне форума Ответить с цитированием
Старый 07.01.2011, 17:13   #3
Strax
 
Регистрация: 25.12.2009
Сообщений: 7
По умолчанию

При запуске возникает ошибка


Тоже самое и в онкреат и через кнопку попробывал
Strax вне форума Ответить с цитированием
Старый 07.01.2011, 17:15   #4
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

А зачем нужно закрывать фаерфокс?

Знания нулевые, но напакастить охота )
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 07.01.2011, 17:20   #5
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

ем... ты функцию не прописал ты кусок записал а кнопку а кусок оставил, кароче, добавь, в юсес Tlhelp32 потом скопируй и вставь функцию после Implementation далее создай обработчик событий ви вставь туда KillTask('firefox.exe');
Lauri вне форума Ответить с цитированием
Старый 07.01.2011, 17:21   #6
Strax
 
Регистрация: 25.12.2009
Сообщений: 7
По умолчанию

Да дело не на солить а в том что у меня при закрытии фаирфокса процесс остаётся и по новой ты его не запустишь пока процесс не уберёшь.
Сам то я без проблем закрываю и делаю всё по новой а вот каждый раз объяснять маме куда жать мне уже надоело вот я подумал было бы неплохо облегчить жизнь
Strax вне форума Ответить с цитированием
Старый 07.01.2011, 17:26   #7
Vaigard
Delphi and (not C)
Форумчанин
 
Аватар для Vaigard
 
Регистрация: 04.12.2010
Сообщений: 117
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,tlhelp32, StdCtrls;
 function killTask(ExeFileName: string): Integer;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
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;


procedure TForm1.Button1Click(Sender: TObject);
begin
killtask('firefox.exe');
end;

end.
Создай на форме одну кнопку, ничего у нее не меняй, а в обработчике кода все удали и вставь этот код Вместо firefox.exe по мере надобности пиши другие процессы

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,tlhelp32, StdCtrls;
 function killTask(ExeFileName: string): Integer;
type
  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
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;


procedure TForm1.FormCreate(Sender: TObject);
begin
 killtask('firefox.exe');
end;

end.
Вариант для OnCreate
<--Жми на весы

Последний раз редактировалось Vaigard; 07.01.2011 в 17:29. Причина: Дописал сообщение.
Vaigard вне форума Ответить с цитированием
Старый 07.01.2011, 17:28   #8
Strax
 
Регистрация: 25.12.2009
Сообщений: 7
По умолчанию

Большое Спасибо Lauri и Vaigard
Strax вне форума Ответить с цитированием
Старый 07.01.2011, 17:30   #9
Vaigard
Delphi and (not C)
Форумчанин
 
Аватар для Vaigard
 
Регистрация: 04.12.2010
Сообщений: 117
По умолчанию

Нажми на весы - лучшая благодарность
<--Жми на весы
Vaigard вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрыть, Отмена. agregator Microsoft Office Excel 6 12.02.2010 09:56
закрыть компонент StartMis Общие вопросы Delphi 2 25.12.2009 21:47
Закрыть Form2 Casper-SC Общие вопросы .NET 9 25.12.2009 20:36
Закрыть доступ! anton14 Свободное общение 10 23.01.2009 21:40
закрыть программу Var17 Общие вопросы Delphi 1 20.12.2007 10:06