FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Enviar Texto a otra ventana
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Enviar Texto a otra ventana
Posted: Tue May 05, 2026 09:09 AM

Hola buenos dias,

Quiero enviar un texto desde una ventana para que se muestre en otra venta que está corriendo al mismo tiempo Alguien podría darme un pequeño ejemplo Gracias

Posts: 199
Joined: Wed Jan 02, 2019 08:36 AM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 11:54 AM
Jesús Marín
deumare@gmail.com
Posts: 199
Joined: Wed Jan 02, 2019 08:36 AM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 11:55 AM
FUNCTION New4(oApp,oWndPrincipal)

LOCAL oWnd
LOCAL oBar, oFont, oFont2

LOCAL oGet1, cVar1:=SPACE(100)
LOCAL oDlg, oSay, cSay:="texto"


   DEFINE WINDOW MDICHILDFOLDER oWnd OF oWndPrincipal TITLE "Text -> Win"
   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0,-16
   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0,-14

oBar := TBar():NewAt( 41, 0, 2440, 35,,, oWnd, .f.,,,.f. )
oBar:SetColor(CLR_BLACK,CLR_WHITE)
oBar:bRClicked := { | a,b | oWnd:MenuFolders(,a+40,b) }
Botones_generales(oBar,oWndPrincipal,oApp)


@150,20 GET oGet1 VAR cVar1 OF oWnd SIZE 200,25 FONT oFont PIXEL
  oGet1:bChange := { || oSay:SetText(cVar1) }

  DEFINE DIALOG oDlg FROM 150,300 TO 250,500 OF oWnd PIXEL
     @10,10 SAY oSay VAR cSay OF oDlg SIZE 200,22 FONT oFont2 PIXEL UPDATE
  ACTIVATE DIALOG oDlg NOWAIT



   ACTIVATE WINDOW oWnd
   oFont:End()
   oFont2:End()

RETURN(NIL)
Jesús Marín
deumare@gmail.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 12:07 PM

Cada ventana pertenece a una aplicación diferente ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 02:07 PM
// C:\FWH2603\SAMPLES\MIARCOD.PRG

#include "FiveWin.ch"

// Ventana 1
FUNCTION VentanaPrincipal()

   LOCAL oDlg, oBtn2, cNome := "FiveWin the Best", oBtn, oBrush

   DEFINE BRUSH oBrush COLOR CLR_CYAN
   

   DEFINE DIALOG oDlg TITLE "Ventana 1 Para Ventana 2" BRUSH oBrush ;
      SIZE 400, 150

   oDlg:lHelpIcon := .F.

   @ 1, 1 GET cNome OF oDlg SIZE 70, 12 COLOR "W/G"

   @ 2, 1 BUTTON oBtn PROMPT "Ventana 2" ;
      ACTION SegundoVentana( cNome ) // Passando a variavel

   @ 2, 20 BUTTON oBtn2 PROMPT "&Cerrar" ACTION( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

// Ventana 2
FUNCTION SegundoVentana( cParametro ) // Recebendo o parametro

   LOCAL oDlg2, oBtn2, oBrush
   

   DEFINE BRUSH oBrush GRADIENT { { 0.4, nRGB( 75, 144, 223 ), nRGB( 41, 85, 145 ) },;
                                  { 0.6, nRGB( 24,  61, 118 ), nRGB( 50, 95, 158 ) } }

   DEFINE DIALOG oDlg2 TITLE "Ventana 2" SIZE 400, 150 BRUSH oBrush TRANSPARENT

   oDlg2:lHelpIcon := .F.

   @ 1, 1 SAY "Valor recebido: " + cParametro of oDlg2 SIZE 100, 16 ;
      COLOR CLR_WHITE TRANSPARENT ADJUST UPDATE

   @ 2, 1 BUTTON oBtn2 PROMPT "&Salida" ACTION( oDlg2:End() )

   ACTIVATE DIALOG oDlg2 CENTERED

RETURN NIL

// FIN / END

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 02:53 PM

Si, cada ventana es una aplicación independiente.

La idea es montar una ventana de log para ir enviando mensajes desde otra aplicación. Si la ventana está disponible mostraría el mensaje, y si no ese mensaje se pierde.

Se me ocurre hacerlo utilizando un fichero de texto que la ventana de log está leyendo constantemente, pero queria saber si es posible enviar un mensaje directamente a otra ventana que está corriendo en el PC.

Un saludo.

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 03:05 PM

Algo asi?

App A: MemoWrit("temp.txt", "texto da variavel")

App B: cTexto := MemoRead("temp.txt")
// Após ler a balança
cPeso := "10.50"
IF (nHandle := fCreate("peso.txt")) != -1
    fWrite(nHandle, cPeso)
    fClose(nHandle)
ENDIF
// Ao ler o peso
IF file("peso.txt")
    cPeso := memoread("peso.txt")
    ? "Peso atual: " + cPeso
ENDIF

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 03:14 PM

Maestro Antônio, ¿tiene algún ejemplo de cómo usar SendMessage( hWnd, nMsg, wParam, lParam) para enviar un mensaje de un archivo .EXE a otro?

Gracias, tks.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 06:46 PM

Gracias Lo de los ficheros ya lo había pensado, lo que realmente busco es lo que le pides tu a Antonio Poder enviar un mensaje a otro exe que se encuentre en ejecución. Un saludo

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 07:24 PM

La IA dijo:

// C:\FWH2603\SAMPLES\SENDMES1.PRG

#include "FiveWin.ch"

#define WM_COPYDATA 0x004A

FUNCTION Main()

   LOCAL oWnd, oBtn

   DEFINE WINDOW oWnd TITLE "Emisor"

   @ 2, 2 BUTTON oBtn PROMPT "Enviar Mensaje" ;
      ACTION EnviarDatos("ReceptorTitle", "Hola desde el emisor")

   ACTIVATE WINDOW oWnd

RETURN NIL

FUNCTION EnviarDatos(cTitle, cText)

   LOCAL hWnd := FindWindow(0, cTitle) // Busca la ventana por título
   LOCAL nLen := Len(cText)
   LOCAL nResult

   IF hWnd != 0

  // WM_COPYDATA requiere una estructura COPYDATASTRUCT
  // En Harbour/Fivewin, a veces se puede pasar directamente con SendMessage
  // o usando estructuras de la API.
  
  // Enfoque simplificado con SendMessage
  SendMessage(hWnd, WM_COPYDATA, 0, cText)

  MsgInfo("Mensaje enviado")

   ELSE

  MsgStop("Ventana receptora no encontrada")

   ENDIF

RETURN NIL

// FIN / END
[code]

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 07:27 PM

// C:\FWH2603\SAMPLES\SENDMES2.PRG

#include "FiveWin.ch"

#define WM_COPYDATA 0x004A

FUNCTION Main()

   LOCAL oWnd

   DEFINE WINDOW oWnd TITLE "ReceptorTitle" // Título único
   

   // Sobrescribir el manejador de eventos de la ventana
   oWnd:bHandleEvent = {|nMsg, nWParam, nLParam| ReceptorWin(nMsg, nWParam, nLParam, oWnd)}
   

   ACTIVATE WINDOW oWnd

RETURN NIL

FUNCTION ReceptorWin(nMsg, nWParam, nLParam, oWnd)

   IF nMsg == WM_COPYDATA

  // nLParam contiene la dirección de los datos en WM_COPYDATA
  // Aquí se procesa el mensaje (necesario manejar COPYDATASTRUCT)
  MsgInfo("Mensaje recibido: " + cValToChar(nLParam))

  RETURN 0 // Mensaje procesado

   ENDIF

RETURN oWnd:HandleEvent(nMsg, nWParam, nLParam)

// FIN / END

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Enviar Texto a otra ventana
Posted: Tue May 05, 2026 07:40 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Re: Enviar Texto a otra ventana
Posted: Wed May 06, 2026 07:13 AM

Gracias, voy a probar Un saludo

Continue the discussion