// Pruebas de exe dentro de un exe CMD
// Jesús Marín Vives 06/05/2023
#include "FiveWin.ch"
Static oWnd
Static oWndChild, oWnd2
Static nRow := 0
Static nCol := 0
Static nHChild := 650
Static nWChild := 1000
Static hWin
function Main()
DEFINE WINDOW oWnd MDI FROM 50,50 TO 700, 1200 PIXEL ;
TITLE "Abir CMD en Dialogo de un MdiChild" MENU MyMenu()
ACTIVATE WINDOW oWnd //MAXIMIZED
return nil
//----------------------------------------------------------------------------//
Function MyMenu()
local oMnu
MENU oMnu
MENUITEM "Crea MdiChild" ACTION ( CreaChild() )
MENUITEM "Exit" ACTION oWnd:End()
ENDMENU
Return oMnu
//----------------------------------------------------------------------------//
Function CreaChild()
DEFINE WINDOW oWndChild MDICHILD OF oWnd ;
FROM nRow + 1 , nCol TO nHChild, nWChild PIXEL ;
COLOR CLR_WHITE, CLR_BLUE TITLE "CMD.EXE sobre Dialogo"
ACTIVATE WINDOW oWndChild MAXIMIZED;
ON INIT ( Externo() )
return oWndChild
//----------------------------------------------------------------------------//
#define GW_HWNDNEXT 2
#define GW_CHILD 5
#define GWL_STYLE -16
#define GWL_EXSTYLE -20
#define SWP_NOZORDER 0x0004
#define SWP_NOREDRAW 0x0008
#define SWP_FRAMECHANGED 0x0020
#define SWP_NOOWNERZORDER 0x0200
#define SWP_ASYNCWINDOWPOS 0x4000
#define HWND_TOP 0
#define HWND_BOTTOM 1
//----------------------------------------------------------------------------//
STATIC FUNCTION Externo()
DEFINE DIALOG oWnd2 OF oWndChild /*STYLE WS_CHILD*/ FROM 10,10 TO 572, 792 PIXEL TITLE "Probando CMD.EXE dentro del diálogo"
ACTIVATE DIALOG oWnd2 CENTER NOWAIT ON INIT Externo2()
return nil
STATIC FUNCTION Externo2()
local nStyle
hWin=NIL
if Empty( hWin )
SysRefresh()
IF hWin = NIL
WinExec( "CMD.EXE")
SysRefresh()
MsgWait(" Espera un momento","Se está activando CMD.EXE",2)
SysRefresh()
hWin := FindWnd( "CMD.EXE" )
ENDIF
endif
if !Empty( hWin )
nStyle := GetWindowLong( hWin, GWL_STYLE )
nStyle -= WS_CAPTION
nStyle -= WS_SYSMENU
nStyle -= WS_THICKFRAME
SetParent( hWin, oWnd2:hWnd )
SetWindowLong( hWin, GWL_STYLE, nStyle )
SetPosExt( hWin )
SetFocus( hWin )
endif
RETURN NIL
//----------------------------------------------------------------------------//
Function FindWnd( cTitle )
local hWnd1 := GetWindow( GetDesktopWindow(), GW_CHILD )
local lSw := .F.
while hWnd1 != 0
if Upper( cTitle ) $ Upper( GetWindowText( hWnd1 ) )
lSw := .T.
Exit
endif
hWnd1 = GetWindow( hWnd1, GW_HWNDNEXT )
end
return if( lSw, hWnd1, nil )
//----------------------------------------------------------------------------//
Function SetPosExt( hWnd )
local aRect := GetClientRect( hWnd )
local nAncho := oWnd2:nWidth // -10
local nInc := 0
local nInc1 := 0
local aPos := Array( 4 )
DEFAULT aPos[ 1 ] := 1 //ntop
DEFAULT aPos[ 2 ] := 1 //nleft
DEFAULT aPos[ 3 ] := nAncho -10
DEFAULT aPos[ 4 ] := oWnd2:nHeight - nInc - nInc1 - aPos[ 1 ] -32
SetWindowPos( hWnd, HWND_TOP, ; //BOTTOM, ;
aPos[ 1 ] + nInc, aPos[ 2 ] + 1, aPos[ 3 ], aPos[ 4 ], ;
nOr( SWP_ASYNCWINDOWPOS, SWP_FRAMECHANGED, SWP_NOOWNERZORDER, SWP_NOZORDER, SWP_NOREDRAW ) ) //, SWP_NOZORDER ) )
Return nil
//----------------------------------------------------------------------------//
morin0510 wrote:muchas gracias por contestar tan rapido te digo lo que intento hacer
en una ventana de windows tengo un editor de texto donde esta el prg
en el editor modificas el prg y tengo 2 botones uno que compila y otro para el exe
al compilar Winexec(d:\prueba\p1.bat") funciona pero no ves los errores y quisiera poner
debajo del editor en la misma pantalla el texto que sale en cmd para no ir de un lado a otro
no se si se puede hacer y si me explique bien lo que quiero hacer.
morin0510 wrote:muchas gracias por contestar tan rapido te digo lo que intento hacer
en una ventana de windows tengo un editor de texto donde esta el prg
en el editor modificas el prg y tengo 2 botones uno que compila y otro para el exe
al compilar Winexec(d:\prueba\p1.bat") funciona pero no ves los errores y quisiera poner
debajo del editor en la misma pantalla el texto que sale en cmd para no ir de un lado a otro
no se si se puede hacer y si me explique bien lo que quiero hacer.
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 29 guests