Hola compañeros foreros...
Os traigo una preguntita... estoy intentando hacer un programa que filtre una serie de ejecutables, de modo que no se pueda ejecutar, por ejemplo, el buscaminas o el messenger. Al principio usaba el truco de trucomanía:
Código:
procedure TForm1.Button1Click(Sender: TObject);
function KillTask(FileName:String):integer;
var
ContinueLoop:BOOL;
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
const
PROCESS_TERMINATE=$0001;
begin
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(FileName))
or (UpperCase(FProcessEntry32.szExeFile)=UpperCase(FileName)))
then
Result:=Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),
FProcessEntry32.th32ProcessID),0));
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
begin
KillTask('calc.exe');
KillTask('msmsgs.exe');
KillTask('winamp.exe');
end;
Pero con el tiempo la lista se hizo muy grande... y estaba bastante desordenada...
A mí me gustaría poder hacer una lista de ejecutables y que un procedure me compobase si existen, y en tal caso, cerrarlo. ¿Alguien me podría hacer la modificación?. Yo no sé hacerla

, no quiero que me haga el proyecto, sino solo modificar los procedures
Doy dos pistas: la siguiente y la que yo uso para cerrar el ejecutable.
Código:
function EstaEjecutandose (ExeFile:string): boolean;
var H:word;
begin
H := CreateFile(PChar(ExeFile), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
Result := (H >= 65535);
CloseHandle(H);
end;