блокировка процессов
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
блокировка процессов - 2011-03-16 14:25:59.146666
|
|
|
bonderwolf
Сообщений: 4
Оценки: 0
Присоединился: 2011-03-06 08:33:27.573333
|
Прошу прощение если тема уже была. Но мне нужно на Delphi написать прогу, которая блокирует/запрещает тот или иной процесс (то есть не позволяет запустить какую либо программу, игрушку и т.д.). И как лучше придать вид для такой проги: сдлать список всех запущенных процессов и рядом кнопку заблокировать/разблокировать, или же блокировать по имени процесса (но мне кажется что это темножко тяжелее, т.к. узнать имя запущеного процесса проблематично, если прога на тот момент не запущена). Если у кого есть коды, инфа, предложения или исходники (что врятли, но самый лучший вариант) - Блодьшая просьба отписаться.
|
|
|
RE: блокировка процессов - 2011-03-16 15:36:15.126666
|
|
|
webkraft
Сообщений: 2388
Оценки: 95
Присоединился: 2009-03-01 15:59:53.456666
|
Вот если так поиздеваться, поставить у таймера интервал например 1 unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Tlhelp32, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(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.Timer1Timer(Sender: TObject);
begin
//можно сделать проверочку на findwindow
KillTask('PSpad.exe');
end;
end. как вариант
|
|
|
RE: блокировка процессов - 2011-03-16 21:01:54.993333
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Если по-хорошему совсем, то можно в подшивке журнала найти установку хуков на API, так перехватывать вызов CreateProcess. Перехватив, фильтровать. С++ на Delphi переделать там в принципе реально.
|
|
|
RE: блокировка процессов - 2011-03-17 09:24:55.500000
|
|
|
bonderwolf
Сообщений: 4
Оценки: 0
Присоединился: 2011-03-06 08:33:27.573333
|
webkraft - спс прибольшое Genco - интересная идея, хоть и прописывать пиредся немнога больше, но спс)
|
|
|
RE: блокировка процессов - 2011-03-17 14:17:14.953333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Читать до полного удовлетворения, особенно касательно работы с реестром: http://support.microsoft.com/kb/323525/en-us
|
|
|
|
|