ocultar ventana msdos

1,354 views
Skip to first unread message

edgar suarez kummers

unread,
Mar 25, 2012, 9:38:00 AM3/25/12
to publice...@googlegroups.com
Estimados Maestros del VFP:

Encontré en MICROSOFT el código que está en azul.
Pretendo que cuando se corra una aplicación en MSDOS llamada desde VFP
se oculte la ventana del MSDOS.
La pregunta es ... si tengo un EJECUTE.BAT 
Donde se colocaría dentro del código en azul.
O otra solución ... sin usar otros programas 
¿ como se puede minimizar una ventana MSDOS ?

Llevo varios días con eso y he usado CMDOW y CONSOLETOOL 
pero siempre salta la ventana MSDOS, porque son varios los *.BAT
que tiene la aplicación en Visual Foxpro.

saludos

edgar 

*---------------- Run.prg -----------------------------
* Sample program to Execute an MS-DOS command and keep
* the MS-DOS window hidden.
*
*To use this function in FoxPro to create a new directory,
* use the following command:
*
*    DO run WITH "MD C:\VFP\TESTDIR"
*

FUNCTION run
PARAMETER doscmd

DECLARE INTEGER WinExec IN win32api AS run ;
   STRING command, INTEGER param

* To have control over the visibility of the
* MS-DOS command, call it through a .pif file.
*
* IMPORTANT: (1) Be sure the "Close Window on Exit" check box in
* the PIF file is selected. (2) Be sure "Windowed" is the
* selected "Display Usage."

cmdstart = SYS(2004) + "FOXRUN.PIF /C "

* Now concatenate the two pieces of the command:

fullcmd = cmdstart + doscmd

retval = run(fullcmd, 0)

RETURN retval
*------- End of program ----------------------

--
edgar suarez kummers

Dario_El_Cyber_Gaucho

unread,
Mar 25, 2012, 9:55:06 AM3/25/12
to publice...@googlegroups.com
Te envio una modificada con el mismo comando...

pcomando=" regsvr32.exe micontrol.ocx"
WinEjec(pComando, 0)

......Funcion................
function WinEjec
parameter pcomando

DECLARE LONG WinExec IN kernel32 ;
STRING lpCmdLine , ;
LONG nCmdShow

WinExec(pComando, 0)
return...

donde...
0 - no se muestra (se ejecuta, pero no se hace visible)
1 - la Ventana se Muestra Normal
2 - Minimizado
3 - Maximizado
4 - Tama�o Normal, pero no le entrega el Foco al Programa/Comando que
se ejecuta

Espero te sirva...

Dario


edgar suarez kummers

unread,
Mar 25, 2012, 10:17:12 AM3/25/12
to publice...@googlegroups.com
Muchas Gracias Dario_Che:

Voy a ensayarla y te comento ...

saludos

edgar

El 25 de marzo de 2012 08:55, Dario_El_Cyber_Gaucho <hans...@gmail.com> escribió:
Te envio una modificada con el mismo comando...

pcomando=" regsvr32.exe micontrol.ocx"
WinEjec(pComando, 0)

......Funcion................
function WinEjec
parameter pcomando

DECLARE LONG WinExec IN kernel32 ;
  STRING lpCmdLine , ;
  LONG nCmdShow

WinExec(pComando, 0)
return...



donde...
 0 - no se muestra (se ejecuta, pero no se hace visible)
 1 - la Ventana se Muestra Normal
 2 - Minimizado
 3 - Maximizado
 4 - Tamaño Normal, pero no le entrega el Foco al Programa/Comando que se ejecuta

Espero te sirva...

Dario







--
edgar suarez kummers

Douglas Sánchez Guillén

unread,
Mar 25, 2012, 10:21:23 AM3/25/12
to publice...@googlegroups.com
Si vas ocultar la pantalla de dos ejecutando un Archivo por lote .bat

seria asi desde vfp

WshShell =  CreateObject("WScript.Shell")
WshShell.Run("backup.bat",0)   &&&& el cero oculta el 1 muestra.
WshShell = null

Saludes

Dario_El_Cyber_Gaucho

unread,
Mar 25, 2012, 11:01:01 AM3/25/12
to publice...@googlegroups.com
Edgar sin iniciar ninguna disputa politica :=)

esa referencia _CHE es a cierto nefasto personaje de mi pais?...
dejame con el Cyber_Gaucho que fueron los hombres que hicieron mi patria...


El 25/03/2012 11:17 a.m., edgar suarez kummers escribi�:


> Muchas Gracias Dario_Che:
>
> Voy a ensayarla y te comento ...
>
> saludos
>
> edgar
>
> El 25 de marzo de 2012 08:55, Dario_El_Cyber_Gaucho

> <hans...@gmail.com>escribi�:


>
>> Te envio una modificada con el mismo comando...
>>
>> pcomando=" regsvr32.exe micontrol.ocx"
>> WinEjec(pComando, 0)
>>
>> ......Funcion................
>> function WinEjec
>> parameter pcomando
>>
>> DECLARE LONG WinExec IN kernel32 ;
>> STRING lpCmdLine , ;
>> LONG nCmdShow
>>
>> WinExec(pComando, 0)
>> return...
>>
>>
>>
>> donde...
>> 0 - no se muestra (se ejecuta, pero no se hace visible)
>> 1 - la Ventana se Muestra Normal
>> 2 - Minimizado
>> 3 - Maximizado

>> 4 - Tama�o Normal, pero no le entrega el Foco al Programa/Comando que se

edgar suarez kummers

unread,
Mar 25, 2012, 11:10:20 AM3/25/12
to publice...@googlegroups.com
No sabía eso del personaje nefasto, pero te haré caso.

Gracias Dario

Ahora, una pregunta, tengo es un archivo BAT

¿ Dónde lo coloco en tu código ?

El 25 de marzo de 2012 10:01, Dario_El_Cyber_Gaucho <hans...@gmail.com> escribió:
Edgar sin iniciar ninguna disputa politica :=)

esa referencia _CHE es a cierto nefasto personaje de mi pais?...
dejame con el Cyber_Gaucho que fueron los hombres que hicieron mi patria...


El 25/03/2012 11:17 a.m., edgar suarez kummers escribió:
Muchas Gracias Dario_Che:

Voy a ensayarla y te comento ...

saludos

edgar

El 25 de marzo de 2012 08:55, Dario_El_Cyber_Gaucho
<hans...@gmail.com>escribió:

Te envio una modificada con el mismo comando...

pcomando=" regsvr32.exe micontrol.ocx"
WinEjec(pComando, 0)

......Funcion................
function WinEjec
parameter pcomando

DECLARE LONG WinExec IN kernel32 ;
  STRING lpCmdLine , ;
  LONG nCmdShow

WinExec(pComando, 0)
return...



donde...
 0 - no se muestra (se ejecuta, pero no se hace visible)
 1 - la Ventana se Muestra Normal
 2 - Minimizado
 3 - Maximizado
 4 - Tamaño Normal, pero no le entrega el Foco al Programa/Comando que se

ejecuta

Espero te sirva...

Dario









--
edgar suarez kummers

Douglas Sánchez Guillén

unread,
Mar 25, 2012, 11:15:13 AM3/25/12
to publice...@googlegroups.com
Hola Edgar yo tengo un archivo .bat   ahi dentro del el pones tu codigo si vas a registrar los ocx x ejemplo
y  crea un prg y pones esto dentro del prg


WshShell =  CreateObject("WScript.Shell")
WshShell.Run("tuarchivo.bat",0)
WshShell = null

y lo ejecutas normalmente desde un menu o form do  tuprogr.prg

Ojo. el archivo.bat tiene que estar en la carpeta de tu sistema, en este caso.

Saludes

edgar suarez kummers

unread,
Mar 25, 2012, 11:20:37 AM3/25/12
to publice...@googlegroups.com
Buenas Douglas, voy a hacer unos cambios en mis BAT ...

a ver qué ocurre ...

saludos

edgar
--
edgar suarez kummers

Dario_El_Cyber_Gaucho

unread,
Mar 25, 2012, 1:11:05 PM3/25/12
to publice...@googlegroups.com
No se cual es tu idea pero esos bat no pueden ser procedures en prg
independientes?

DArio

El 25/03/2012 12:20 p.m., edgar suarez kummers escribi�:


> Buenas Douglas, voy a hacer unos cambios en mis BAT ...
>

> a ver qu� ocurre ...
>
> saludos
>
> edgar
>
> El 25 de marzo de 2012 10:15, Douglas S�nchez Guill�n
> <dougl...@gmail.com>escribi�:

edgar suarez kummers

unread,
Mar 25, 2012, 2:05:13 PM3/25/12
to publice...@googlegroups.com
Estimados Douglas y Dario:

Gracias infinitas por sus recomendaciones.

Funcionó, tuve que ajustar conceptos míos por Internet, pero al final funcionó.

Gracias

edgar



El 25 de marzo de 2012 12:11, Dario_El_Cyber_Gaucho <hans...@gmail.com> escribió:
No se cual es tu idea pero esos bat no pueden ser procedures en prg independientes?

DArio

El 25/03/2012 12:20 p.m., edgar suarez kummers escribió:
Buenas Douglas, voy a hacer unos cambios en mis BAT ...

a ver qué ocurre ...

saludos

edgar

El 25 de marzo de 2012 10:15, Douglas Sánchez Guillén
<dougl...@gmail.com>escribió:


Hola Edgar yo tengo un archivo .bat   ahi dentro del el pones tu codigo si
vas a registrar los ocx x ejemplo
y  crea un prg y pones esto dentro del prg

WshShell =  CreateObject("WScript.Shell")
WshShell.Run("tuarchivo.bat",0)
WshShell = null

y lo ejecutas normalmente desde un menu o form do  tuprogr.prg

Ojo. el archivo.bat tiene que estar en la carpeta de tu sistema, en este
caso.

Saludes






--
edgar suarez kummers
Reply all
Reply to author
Forward
0 new messages