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
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
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)Cada ventana pertenece a una aplicación diferente ?
// 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 / ENDRegards, saludos.
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.
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
ENDIFRegards, saludos.
Maestro Antônio, ¿tiene algún ejemplo de cómo usar
Gracias, tks.
Regards, saludos.
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
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.// 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 / ENDRegards, saludos.
Gracias, voy a probar Un saludo