elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  Windows (Moderador: Randomize)
| | |-+  Ejecutar un .bat minimizado desde menú contextual
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejecutar un .bat minimizado desde menú contextual  (Leído 6,680 veces)
wyxchari

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Ejecutar un .bat minimizado desde menú contextual
« en: 13 Noviembre 2015, 13:40 pm »

Se trata de un programa bat para mover archivos .mp4. He llegado hasta ejecutar el bat pero no consigo que lo haga minimizado. Siempre me pega el fogonazo negro aunque se ejecuta bien.

Para ponerlo en el menú contextual uso estas claves:
Código:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VLC.mp4\shell\Mover a Pelis\command]
c:\windows\system32\cmd.exe /c c:\w\prog\trastra\movepel.bat %1

Ya he probado sin resultado a poner en el registro:
Código:
c:\windows\system32\cmd.exe /c start /min c:\w\prog\trastra\movepel.bat %1

Tampoco funciona con acceso directos .lnk en el registro y que éstos llamen al bat. Se ejecuta pero no minimizado aunque expresamente lo indique en la propiedades del acceso directo.

Sólo me queda probar a hacer un lanzador en VB6 que ejecute el bat o convertir el bat en exe que es casi lo mismo.

Con un lanzador funciona bien:
Código
  1. Private Sub Form_Load()
  2. Shell "c:\w\prog\trastra\renosrt4.bat " & Command, vbHide
  3. End
  4. End Sub
  5.  

Pero sigo pensando que debe haber otro método. Es demasiado rebuscado:
Registro --> VB6.exe --> .bat

¿Se os ocurre algo más para no usar un lanzador? Muchas gracias y saludos.


« Última modificación: 13 Noviembre 2015, 14:13 pm por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Ejecutar un .bat minimizado desde menú contextual
« Respuesta #1 en: 13 Noviembre 2015, 14:19 pm »

No, no puedes iniciar una instancia minimizado del proceso CMD.exe a menos que inicies dicho proceso desde otro lenguaje capacitado para modificar el estilo de ventana inicial del proceso, por ejemplo desde VB6, Vb.Net.

Este ejemplo en Visual Basic Script sirve para iniciar un proceso de manera oculta:
RunHidden.vbs
Código
  1. Process   = """" & WScript.Arguments(0) & """"
  2. Arguments = null
  3.  
  4. For X = 1 to WScript.Arguments.Count - 1
  5.   Arguments = Arguments & " " & _
  6.               """" & WScript.Arguments(X) & """"
  7. Next
  8.  
  9. WScript.CreateObject("WScript.Shell").Run _
  10. Process & " " & Arguments, 0, False
  11.  
  12. Wscript.Quit

Ejemplo:
Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [Clave de registro]
  4. @="Wscript.exe \"C:\\Windows\\System32\\RunHidden.vbs\" \"C:\\Ruta del archivo.bat\" \"%1\""



Te muestro un ejemplo escrito en Visual Basic.Net para ejecutar un proceso de manera minimizada:

Código
  1. Dim p As New Process
  2. p.StartInfo.FileName = "CMD.exe"
  3. p.StartInfo.Arguments = "/K ""Argumentos"""
  4. p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
  5. p.Start()

Saludos


« Última modificación: 13 Noviembre 2015, 14:23 pm por Eleкtro » En línea



wyxchari

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Ejecutar un .bat minimizado desde menú contextual
« Respuesta #2 en: 13 Noviembre 2015, 14:29 pm »

Muchas gracias por tu ayuda. Ya me funciona bien. Sólo tenía la duda de si había alguna manera de iniciar minimizado desde el registro. Ha quedado así:

Menú contextual de un archivo en el registro:
c:\w\prog\trastra\lanza.exe c:\w\prog\trastra\renosrt4.bat %1

lanza.exe en VB6 que sirve para cualquier otro programa:
Citar
Private Sub Form_Load()
Shell Command, vbHide
End
End Sub

Simple y efectivo. Saludos.
« Última modificación: 13 Noviembre 2015, 14:43 pm por wyxchari » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines