Ver Mensaje Individual
  #9  
Antiguo 22-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Vamos a ver una cosa.

¿Es realmente necesario el uso de AttachThreadInput?

El código que utilizas lo usé yo en otro contexto: el de evitar que una aplicación se ejecute más de una vez simultáneamente.

En ese caso fue necesario por la siguiente razón (al menos es lo que creo entender):

El código de activación (el que usa AttachThreadInput) se ejecuta en la primera instancia de la aplicación en un momento en que ésta no tiene el foco (el foco lo tiene la segunda instancia). Dicho de otra forma, es un código que se ejecuta desde un hilo distinto al que tiene el foco.

En tu caso, según entiendo, es distinto-- el código de activación se ejecuta desde tu aplicación que es la que tiene el foco. En ese caso siento que no deberías tener problemas con métodos más sencillos de activación.

El siguiente código lo acabo de probar y activa correctamente tanto IE como en MSWord:

Código:
var
  AppHandle: HWnd;

begin
  AppHandle := FindWindow(nil, AppName);
  if AppHandle <> 0 then
    if IsIconic(AppHandle)
      then ShowWindow(AppHandle, SW_RESTORE)
      else SetForegroundWindow(AppHandle);
Claro que tú estás obteniendo el "Handle" de las aplicaciones de otra forma pero eso no afecta.

Pruébalo así a ver si te sirve.

// Saludos

pd: Esto sólo lo he probado en Windows 2000
Responder Con Cita