Buen día, ahi les va un caso para la araña (al menos para la araña en mi caso), ya tengo rato buscando, pero no encuentro la solución:
Tengo una aplicación la cual no permite doble instancia, entonces cuando esto pasa mando un mensaje de que la aplicación ya está abierta, hasta aquí todo bien.
Pero el problema es que soy de los que les gusta facilitarle la vida a los usuarios, y se me ocurrió que después del mensajito de aplicación duplicada, podría traer el frente la ventana, y he aquí el problema.... cuando la ventana está atrás de otra con el simple Application.BringToFront es suficiente.... pero: ¿Que hacer cuando la ventana está minimizada?
Ya probé con
ShowWindow(frmPpal.Handle,SW_RESTORE) y
Application.Restore en varias combinaciones. Mi código es como sigue:
Código Delphi
[-] ShowMessage('Ya tiene abierto el sistema XXXXXXX');
if frmPpal.WindowState = wsMinimized then
ShowWindow(Application.Handle,SW_RESTORE)
else
Application.BringToFront;
Traer al frente la aplicación estando esta atrás de otra no hay problema, BringTofront lo hace bien, pero el problema es cuando trato de restaurar la ventana cuando está minimizada.
NOTA: Cuando llamo a WindowsState para saber si mi aplicación está minimizada no me detecta su estado, por eso siempre se va al
Application.BringToFront, pero dejando solo el ShowWindow (sin el "if"), me marca error de "Access Violation" cuando llamo a
ShowWindow.
¿Alguien sabrá que pasa con esto?
Gracias