Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Showmessage minimizado (https://www.clubdelphi.com/foros/showthread.php?t=86356)

Casimiro Noteví 18-09-2014 21:53:21

Cita:

Empezado por gdlrinfo (Mensaje 481711)
OK disculpas !!!!! Y gracias!!!

Gracias por tu comprensión :)

nlsgarcia 19-09-2014 00:21:24

shoulder,
Cita:

Empezado por shoulder
...JSignPdf 1.4.5 - CAPICOM 1.0.1.32...

:rolleyes:

Te sugiero:

1- Probar el código del Msg #11 y ver como se comporta en relación al problema descrito.

2- Probar las últimas versiones de JSignPdf versión 1.6.0 y CAPICOM versión 2.1.0.1 y ver como se comporta en relación al problema descrito.

Revisa esta información:
Espero sea útil :)

Nelson.

engranaje 19-09-2014 00:44:08

Si esta pasando lo que yo sospecho, aunque en el Button1Click lanzaras cualquier ejecutable (el notepad.exe mismo)
y despues lanzaras el
Código Delphi [-]
MessageDlg(MsgUser,mtInformation,[mbOK],0);
tendrias el mismo problema, podrias probarlo si no fuera mucha molestia. Por otra parte si pudieras hacer otro boton
con el mismo código pero en vea de llamar a messgedlg lo que hicieras fuera crear un nuevo formulario para mostrar mensajes
pasandole el formulario padre como owner y lo llamaras con showmodal es posible que evitaras el problema.
Yo probaría esas dos opciones.
Me temo que si trazas los showmessage y los messageDlg por la vcl hasta el momento en que
hacen el sendmessage para llamar a la api de windows y crear la ventana, y lo comparas con el modo en el que se envia el
mensaje para crear el form podras ver alguna diferencia en los parametros que se pasan. Si estoy en lo cierto esa diferencia es
la que provoca el comportamiento que te preocupa.

shoulder 19-09-2014 16:20:23

Minimizar
 
Tenian razon cuando se llama a algo externo sea token, notepad..etc, al regreso me aparece la ventana minimizada. De las 4 veces que probe una sola vez me aparecio bien. Probe el ejemplo del :

Cita:

procedure TForm1.Button1Click(Sender: TObject);
var
MsgUser : string;
begin
ShellExecute(Handle,'open', 'c:\windows\notepad.exe','c:\cc.txt', nil, SW_SHOWNORMAL) ;
MessageDlg(MsgUser,mtInformation,[mbOK],0);
end;



nlsgarcia 19-09-2014 17:23:52

shoulder,

Cita:

Empezado por shoulder
...Tenían razón cuando se llama a algo externo sea token, notepad..etc, al regreso me aparece la ventana minimizada...

Cita:

Empezado por engranaje
...en ves de llamar a MessageDlg lo que hicieras fuera crear un nuevo formulario para mostrar mensajes pasándole el formulario padre como owner y lo llamaras con Showmodal es posible que evitaras el problema...

:rolleyes:

Te sugiero probar el siguiente código en sustitución de la función MessageDlg y ver como se comporta en relación al problema descrito:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   MsgDialog : TForm;
   MsgUser : String;

begin

   MsgUser := 'Mensaje al Usuario';
   MsgDialog := CreateMessageDialog(MsgUser, mtWarning, [mbOk]) ;
   MsgDialog.FormStyle := fsStayOnTop;
   MsgDialog.ShowModal;
   MsgDialog.Free;

end;
El código anterior en Delphi 7 sobre Windows 7 Professional x32, crea un formulario de mensajes para el usuario, lo coloca al tope del Z-Order y lo muestra en modo ShowModal.

Espero sea útil :)

Nelson.

engranaje 22-09-2014 09:01:59

Si no me equivoco, sucede que cuando creas una ventana desde delphi 7, bien creando tu propio form, con un showmessage o con un messagedlg, al final y siguiendo la vcl vas a llegar al
Código Delphi [-]
  TCustomForm.CreateWindowHandle(const Params: TCreateParams)


y dentro a la llamada a la api en cuestion bien a
Código Delphi [-]
WindowHandle := SendMessage(Application.MainForm.ClientHandle,
      WM_MDICREATE, 0, Longint(@CreateStruct));
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

o a

Código Delphi [-]
CreateWindowEx(ExStyle, WinClassName, Caption, Style,
      X, Y, Width, Height, WndParent, 0, WindowClass.hInstance, Param);

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Según los parametros que en útima instancia se le esten pasando a CreateWindowHandle. Bien, si no me equivoco al llamar a otra aplicación con ShellExecute, esa otra aplicación pasa a estar activa mientras la nuestra pasa a segundo plano. Con la nuestra en segundo plano al llamar amn showmessage o messagedlg al final lo que hace es enviar al sistema un mensaje WM_MDICREATE creando una nueva ventana que tiene como "padre" en el zorder al mainform. Lo que creo es que como nuestra aplicación no está activa la ventana se crea efectivamente pero no como esperamos.

Siento no poder ser de mucha ayuda pero si ya has sido capaz de llegar hasta ese punto yo solo probaría con ese form propio asegurandote de que el padre y el owner es el form desde el que se llama para que finalmente la llamada a la api sea a createWindowEx y el wndParent sea el form desde el que se llama (si no me equivoco el activo en nuestra aplicación). Creo de veras que de este modo podria solucionarse el problema.

shoulder 23-09-2014 23:53:02

Minimizar
 
Gracias por todo. Al final les dije a los usuarios si ven bloqueado el programa hagan click en la barra de windows porque la ventana esta minimizada y ya se acostumbraron. Aclaro no siempre se comporta asi.

nlsgarcia 24-09-2014 00:52:33

shoulder,

Cita:

Empezado por shoulder
...Al final les dije a los usuarios si ven bloqueado el programa hagan click en la barra de Windows porque la ventana esta minimizada...ya se acostumbrarón...

:rolleyes:

Nelson.

shoulder 16-06-2015 16:01:35

Mensajes Minimizados
 
Hola hace tiempo habia posteado este tema pero sigo sin resolverlo por si a alguno le sucede. Despues de firmar digitalmente (no siempre), usando showmessage o MessageDlg, me llaman que la aplicacion quedo trabada y no es asi, el mensaje esta minimizado y hago click sobre el icono del programa en la barra de tareas y continuan bien. Pero es molesto para el usuario.

Hay una forma para dar la orden de que el mensaje no salga minimizado?, por lo que veo despues de usar el Java del firmador vuelve al programa y algo en el delphi hace que se vea el mensaje minimizado pero en forma random no siempre lo hace.

Gracias.

Caminante 16-06-2015 16:10:42

Hola.

¿Y si utilizas application.messagebox pasa lo mismo?

Bueno es solo una sugerencia. A mi nunca me ha pasado eso.

Saludos

shoulder 16-06-2015 16:16:24

Mensaje minimizado
 
Gracias voy a probar, porque cada tanto me llaman y me dicen no anda el sistema.......
cuando abro un programa que hice para scanear solucione el tema agregando

Cita:

vHandle := FindWindow(nil, 'Scanear');
if vHandle <> 0 then
SetForegroundWindow (vHandle);


Pero con un mensaje no se como llamar.
Gracias.

ecfisa 16-06-2015 18:31:18

Hola shoulder.

Existían tres hilos referentes al mismo problema y los combiné en el inicial. Si el problema es el mismo, por favor continúa publicando tus consultas en el primer hilo para evitar resultados redundantes en las búsquedas.

Saludos y gracias por tu colaboración :)

Casimiro Noteví 16-06-2015 18:38:13

Ya me estaba liando con tanto mensaje que tocaba el mismo tema :confused:
Cita:

Empezado por ecfisa (Mensaje 493361)
Hola shoulder.
Existían tres hilos referentes al mismo problema y los combiné en el inicial. Si el problema es el mismo, por favor continúa publicando tus consultas en el primer hilo para evitar resultados redundantes en las búsquedas.
Saludos y gracias por tu colaboración :)

^\||/

nlsgarcia 16-06-2015 19:24:51

shoulder,

Cita:

Empezado por ecfisa
...Existían tres hilos referentes al mismo problema y los combiné en el inicial...

^\||/

Pregunto : ¿Has probado todas las opciones propuestas que se encuentran distribuidas entre todos los mensajes de este hilo? :confused:

Si : Te sugiero que acuerdes con un usuario (El que mas te llame por el evento en cuestión) que te avise antes de cada proceso de firma digital y verifiques de forma presencial que puede estar provocando que el mensaje modal sea minimizado.

No: Revisa las opciones propuestas :D

Espero sea útil :)

Nelson.

shoulder 16-06-2015 20:43:06

Mensaje minimizado
 
Hola por eso habia dicho antes que el tema se habia hablado, lo probe con todo y solucione parcialmente con la forma :

Código Delphi [-]
 vHandle := FindWindow(nil, 'Scanear');
           if vHandle <> 0 then
           SetForegroundWindow (vHandle);

cuando otro programa delphi (en este caso hice un programa que scanea) y con esas sentencias no me aparece minimizado sino al frente.-

El tema es cuando es un mensaje ejemplo :

Código Delphi [-]
Msg := 'Archivo Cambiado';
  MessageBox(Handle, PChar(Msg), PChar('Error'), MB_OK + MB_ICONERROR);

o con messagebox, en forma aleatoria aparece minimizado el mensaje o es mas una vez me paso que ni aparecio el mensaje. usando el Handle puedo forzar un mensaje para que aparezca adelante?.

shoulder 17-06-2015 05:49:26

showmessage minimizado
 
Me parece que lo solucione de esta forma, por ahora no me han llamado:

Código Delphi [-]
Msg := 'Existe un Documento Activo en el View PDF';
MessageBox(Handle, PChar(Msg), PChar('Information'), MB_OK + MB_ICONINFORMATION);


vHandle := FindWindow(nil, 'Information');
           if vHandle <> 0 then
           SetForegroundWindow (vHandle);


La franja horaria es GMT +2. Ahora son las 12:48:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi