Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 21
luisgutierrezb Va por buen camino
bueno, el registerwindowsmessage, debes registrarlo luego luego en la primera instancia, cuando entre la segunda, al volverle a dar el registerwindowmessage te devolvera el mismo numero de mensaje, asi que los 2 ya podran procesarlo...

lo que tambien se me ocurre, porque no desde la primera aplicacion usas un setforegroundwindow desde la aplicacion que se abrio la segunda vez y asi no tienes que mandar un mensaje
Responder Con Cita
  #2  
Antiguo 22-05-2006
Aldo Aldo is offline
Miembro
 
Registrado: ene 2004
Posts: 46
Poder: 0
Aldo Va por buen camino
Traspaso de Estructura como parámetros entre 2 aplicaciones

He dado un giro a mi pregunta inicial y he usado el RegisterWindowMessage para que las dos instancias de la misma aplicación se entiendan entre si con el mismoi dentificador de mensaje y he cambiado un poco la función que envia elmensaje. Ahora ha quedado así
Código Delphi [-]
procedure EnviarMensaje;
     var
        Estructura  : TTGebMantEtruct;
        nModo       : TModoEjecucion;
        nResult     : Integer;
     begin
           ClearGdbMantEstruc( Estructura );
           try
              nModo := DetectarModoEjecucion();

              case nModo of
                 tEjecutarAhora : if ParamCount = 2 then Estructura.szDescTareaOld := PChar( ParamStr( 2 ) );
              end;

              nResult     := SendMessage( HWND_BROADCAST,
                                          RegisterWindowMessage( CAPT_WND_MESSAGE_ACTIVATE_APP ),
                                          Integer( nModo ),
                                          longint( @Estructura ) );
           finally
              ClearGdbMantEstruc( Estructura, True );
           end;
     end;

Ahora si se comunican las dos instancias, pero tengo un nuevo problema y es que la primera instancia cuando recibe el mensaje, éste le llega vacío. Os mando la declaración de la estructura para ver si es que hago algo mal
Código Delphi [-]
   TGdbMantEstruc = packed record
      szDescTareaOld    : WideString;
      szDescTareaNew    : WideString;
      bTareaActiva      : Boolean;
      clsAcciones       : TColeccionAcciones;
      clsProgramaciones : TColeccionProgramaciones;
   end;

   PGdbMantEstruc = ^TGdbMantEstruc;
   TTGebMantEtruct = TGdbMantEstruc;

Y la función que procesa el Mensaje cuando llega ha quedado así:

Código Delphi [-]
procedure TMain.DefaultHandler(var Message);
var
   szTareaName: String;
begin
  inherited DefaultHandler(Message);

   if TMessage( Message ).Msg = RegisterWindowMessage( CAPT_WND_MESSAGE_ACTIVATE_APP ) then
     begin
        szTareaName := PGdbMantEstruc( @TMessage( Message ).LParam )^.szDescTareaOld;
        ShowMessage( 'szTareaName ' + szTareaName ); 
        // El ShowMessage lo pongo para ver que me trae en el campo szDescTareaOld de la estructura 
        case TMessage( Message ).WParam of
              0  : { tNormal };
              1  : { tTaskBar };
              2  : { tInstalar };
              3  : { tDesinstalar };
              4  : { tCrearAccion };
              5  : { tCrearProgramacion };
              6  : { tEditarAccion };
              7  : { tEditarProgramacion };
              8  : { tEliminarTarea };
              9  : { tEliminarAccion };
              10 : { tEliminarProgramacion };
              11 : { tDetenerServicio };
              12 : { tIniciarServicio };
              13 : { tRefrescar };
              14 : { tEjecutarAhora }
                 EjecutarTarea( PGdbMantEstruc( @TMessage( Message ).LParam )^.szDescTareaOld );
        end;
     end;
end;

Os sigo agradeciendo el tiempo prestado por tratar de ayudarme
Responder Con Cita
  #3  
Antiguo 22-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Código Delphi [-]
szTareaName := PGdbMantEstruc( @TMessage( Message ).LParam )^.szDescTareaOld;

A simple vista, me parece que en esta linea te sobra la @.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Evitar Instancias Multiples De Mi Aplicacion edgusano .NET 8 28-04-2005 19:21:02
Instancias de SQLServer HombreSigma MS SQL Server 3 25-04-2005 23:11:43
Multiples instancias Phacko Varios 1 07-09-2004 15:40:25
instancias abiertas muli Firebird e Interbase 0 07-07-2004 19:48:23
instancias botones67 Varios 1 22-08-2003 19:06:11


La franja horaria es GMT +2. Ahora son las 14:06:53.


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
Copyright 1996-2007 Club Delphi