En la pagina de
roman puedes encontrar el codigo para evitar que una aplicación pueda ejecutarse más de una vez. Dentro de este codigo se incluye un trocito encargado de traer la aplicacion la frente de forma adecuada.
Código:
// copiado de la pagina de roman
var
FgThreadId : DWORD; { Hilo de la app. que tenga el foco }
AppThreadId : DWORD; { Hilo de nuestra aplicación }
begin
{ Obtener los hilos }
FgThreadId := GetWindowThreadProcessId(GetForegroundWindow, nil);
AppThreadId := GetWindowThreadProcessId(Handle, nil);
{ Anexar el hilo de nuestra app. al de la que tenga el foco }
AttachThreadInput(AppThreadId, FgThreadId, true);
{ Ahora sí, activar la applicación }
SetForegroundWindow(Handle);
{ Separar el hilo de nuestra app de la otra }
AttachThreadInput(AppThreadId, FgThreadId, false);
end;