Delphi - Ejecuciones de programas

 
Vista:

Ejecuciones de programas

Publicado por Michael (11 intervenciones) el 16/11/2005 18:34:58
Saludos de nuevo,

¿Alquien sabe como hacer que no se pueda volver a ejecutar un programa mientras éste está corriendo? Es decir, evitar que se abra más de una vez un programa, en este caso el que estoy creando.

Muchas gracias,

Michael,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ejecuciones de programas

Publicado por Gargol (21 intervenciones) el 16/11/2005 19:07:02
function ProgramaAbiertoDosVeces:Boolean;
var
Datos :TProcessEntry32;
hID :DWord;
Snap :Integer;
NombreArchivo :String;
Repetido :Boolean;
Handle1 :Hwnd;
Contador :Integer;

begin
Contador:=0;
NombreArchivo:=Application.Exename;
Repetido:=False;
GetWindowThreadProcessId(Handle1,@hID);
Snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
try
Datos.dwSize:=SizeOf(Datos);
if(Process32First(Snap,Datos))then
begin
repeat
if NombreArchivo=StrPas(Datos.szExeFile) then
begin
Inc(contador);
if Contador>=2 then Repetido:=true;
end;
until (not(Process32Next(Snap,Datos))) or (Repetido);
end;
finally
Windows.CloseHandle(Snap);
end;
Result:=Repetido;
end;


en el oncreate de la form:


procedure TForm1.FormCreate(Sender: TObject);
begin
if ProgramaAbiertoDosVeces then
begin
showmessage('El programa ha sido abierto mas de una vez');
Application.terminate;
end;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar