Autor
|
Tema: automatizado de Canal de TV, basado en Batch DOS y VBasic… (Leído 16,777 veces)
|
Dsalomon
Desconectado
Mensajes: 52
|
excellente... voy a hacer las modificaciones en el codigo y te aviso... que resultado me dio... se me ocurre que para darle play o pausa usare Send keys para no usar aplicaciones de terceros..
Saludos...
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
para darle play o pausa usare Send keys para no usar aplicaciones de terceros.. Supongo que te refieres a la función "SendKeys" de VisualBasicScript? Pues hombre, también puedes mover el cursor con VBS, Solo tienes que buscar en Google... Pero yo usaría nircmd para simplificar las dos tareas, Es una aplicación multiusos que es obligado tener "por si acaso". Saludos
|
|
|
En línea
|
|
|
|
Dsalomon
Desconectado
Mensajes: 52
|
maestro te agradeceria si me corriges el codigo... esta muy bueno el tuyo pero todavia me falta... por aprender: REM PASO 1 - - - - - ABRIR el programa Winamp y darle PLAY - - - - - - - - - - - - - - - - - - - - - START /D "%Programfiles%\Winamp\" winamp.exe ( Echo Set objShell = WScript.CreateObject ("WScript.Shell" ) objShell.AppActivate "WINAMP" Wscript.Sleep 1000 REM la tecla "X" le da PLAY a la ventana activa en este caso la ventana winamp )>"%TEMP%\play.vbs" Start /B wscript "%TEMP%\play.vbs" ping localhost -n 3 > nul REM PASO 2 - - - - SI BSPLAYER ESTA ACTIVO CIERRE Ds Clock, Ds Logo y Text Ticker y PAUSAR Winamp :Check Rem Reseteamos la variable "CLOSE". Rem Busca el proceso en activo "bsplayer", Si lo encuentra le da un valor a la variable "Close". Tasklist /FI "IMAGENAME eq bsplayer.exe" | Find /I "bsplayer" >NUL && (Set Close=SI ) Rem Si la variable "close" está definida, Mata los siguientes procesos. Taskkill /F /T /IM "dsclock.exe" >NUL 2 >&1 Taskkill /F /T /IM "dslogo.exe" >NUL 2 >&1 Taskkill /F /T /IM "TxTicker.exe" >NUL 2 >&1 Echo Set objShell = WScript.CreateObject ("WScript.Shell" ) objShell.AppActivate "WINAMP" Wscript.Sleep 1000 REM la tecla "C" le da PAUSA a la ventana activa en este caso la ventana winamp )>"%TEMP%\pausa.vbs" Start /B wscript "%TEMP%\pausa.vbs" ping localhost -n 3 > nul REM PASO 3 - - - Si no esta abierto Bsplayer inicie el programa Ds Clock, Ds Logo y a Winamp darle PLAY REM Si la variable "CLOSE" NO esta definida, Abre los siguientes procesos. START /D "%Programfiles%\DS Clock\" dsclock.exe FOR /R %%_ in (*DsLogo.exe ) do (" %%_" ) Echo Set objShell = WScript.CreateObject ("WScript.Shell" ) objShell.AppActivate "WINAMP" Wscript.Sleep 1000 REM la tecla "X" le da PLAY a la ventana activa en este caso la ventana winamp )>"%TEMP%\pausa.vbs" Start /B wscript "%TEMP%\pausa.vbs" ping localhost -n 3 > nul) Rem Vuelve a la etiqueta principal.
ya casi esta... te agradezco la atencion y todos los consejos que me has brindado... sin duda eres el mejor... Saludos desde Guatemala...
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Veo que para darle al play/pause usas los atajos especiales de Winamp, no habia caido en eso mira! No se como se me pasó. Pero el script está lleno de errores como para que funcione, sobretodo de sintaxis. Voy a comentar solo el error más importante: Set objShell = WScript.CreateObject("WScript.Shell") oWSH.SendKeys "X" Aquí fallas en algo, ¿No te das cuenta? La variable la defines como " objshell", no " oWSH". Aparte de muchos más errores críticos, el script se puede simplificar y mejorar mucho, Aquí tienes: :: [PASO 1] :: Ejecutar el proceso Winamp y darle PLAY. START /D "%Programfiles%\Winamp\" winamp.exe :: [PASO 2] :: Si BSPLAYER está activo, cerrar "Ds Clock", "Ds Logo", "Text Ticker", y darle PAUSE a Winamp. :: Si BSPLAYER no está activo, iniciar "Ds Clock", "Ds Logo", y darle PLAY a Winamp. :Loop Tasklist /FI "IMAGENAME eq bsplayer.exe" | Find /I "bsplayer" >NUL && ( For /F %%# in ('Tasklist ^| Find /I "DSLOGO"' ) Do (Taskkill /F /T /IM " %%#" >NUL 2 >&1 ) Taskkill /F /T /IM "dsclock.exe" >NUL 2 >&1 Taskkill /F /T /IM "TxTicker.exe" >NUL 2 >&1 ) || ( START /D "%Programfiles%\DS Clock\" dsclock.exe FOR /R %%_ in (*DsLogo.exe ) do (" %%_" ) ) :Winamp_Key :: Hotkeys Winamp: :: :: c=Pause :: x=Play :: ( Echo Set objShell = WScript.CreateObject ("WScript.Shell" ^) Echo Success = objShell.AppActivate ("winamp" ^) Echo objShell.SendKeys " %~1" )>"%TEMP%\winamp.vbs" Start /W wscript "%TEMP%\winamp.vbs" Del /Q " %TEMP%\Winamp.vbs" )
Saludos
|
|
|
En línea
|
|
|
|
Dsalomon
Desconectado
Mensajes: 52
|
Supongo que te refieres a la función "SendKeys" de VisualBasicScript?
Pues hombre, también puedes mover el cursor con VBS, Solo tienes que buscar en Google... Pero yo usaría nircmd para simplificar las dos tareas, Es una aplicación multiusos que es obligado tener "por si acaso".
Saludos
gracias por la guia es lo mas avanzado que jamas haya intentado hacer... con el block de notas... si habia pensado en usar el plug in de terceros como el Clever para winamp y guardarlo en la misma carpeta del batch... alguna vez publique algo de eso aqui... pero en este caso lo pienso usar en mis 2 Pc que tengo para este fin de automatizacion... me ha gustado tanto lo de buscar la manera por que he aprendido de VB tambien por eso es que me me he guiado con ejemplos... http://foro.elhacker.net/empty-t321121.0.html
|
|
|
En línea
|
|
|
|
Dsalomon
Desconectado
Mensajes: 52
|
maestro sera que se puede corregir... asi ::[PASO 1] ABRIR Winamp,PLAY a Winamp, ABRIR Dsclock.exe, Dslogo.exe y Dslogo2.exe START /D "%Programfiles%\Winamp\" winamp.exe START /D "%Programfiles%\DS Clock\" dsclock.exe FOR /R %%_ in (*DsLogo.exe ) do (" %%_" ) | FOR /R %%_ in (*DsLogo2.exe ) do (" %%_" ) ::[PASO 2] PROGRAMAR BSplayer y sus listas en el el Escritorio activo - el archivo .bsl es nativo de BSplayer - at 6:45:00 /interactive start "%DesktopPath%" LISTA1.bsl at 9:45:00 /interactive start "%DesktopPath%" LISTA1.bsl at 12:45:00 /interactive start "%DesktopPath%" LISTA1.bsl at 15:45:00 /interactive start "%DesktopPath%" LISTA1.bsl at 18:45:00 /interactive start "%DesktopPath%" LISTA1.bsl at 21:45:00 /interactive start "%DesktopPath%" LISTA1.bsl at 7:30:00 /interactive start "%DesktopPath%" LISTA2.bsl at 10:30:00 /interactive start "%DesktopPath%" LISTA2.bsl at 13:30:00 /interactive start "%DesktopPath%" LISTA2.bsl at 16:30:00 /interactive start "%DesktopPath%" LISTA2.bsl at 19:30:00 /interactive start "%DesktopPath%" LISTA2.bsl at 22:30:00 /interactive start "%DesktopPath%" LISTA2.bsl at 8:15:00 /interactive start "%DesktopPath%" LISTA3.bsl at 11:15:00 /interactive start "%DesktopPath%" LISTA3.bsl at 14:15:00 /interactive start "%DesktopPath%" LISTA3.bsl at 17:15:00 /interactive start "%DesktopPath%" LISTA3.bsl at 20:15:00 /interactive start "%DesktopPath%" LISTA3.bsl at 23:15:00 /interactive start "%DesktopPath%" LISTA3.bsl at 9:00:00 /interactive start "%DesktopPath%" LISTA4.bsl at 12:00:00 /interactive start "%DesktopPath%" LISTA4.bsl at 15:00:00 /interactive start "%DesktopPath%" LISTA4.bsl at 18:00:00 /interactive start "%DesktopPath%" LISTA4.bsl at 21:00:00 /interactive start "%DesktopPath%" LISTA4.bsl at 0:00:00 /interactive start "%DesktopPath%" LISTA4.bsl ::[PASO 3] :ETIQUETA1 ::[PASO 4] Busque El Proceso BSplayer y al encontrarlo, PAUSE Winamp, CERRAR: Dsclock.exe, Dslogo.exe, Dslogo2.exe y TextTicker.exe Tasklist /FI "IMAGENAME eq bsplayer.exe" | Find /I "bsplayer" >NUL && ( Taskkill /F /T /IM "dsclock.exe" >NUL 2 >&1 Taskkill /F /T /IM "Dslogo.exe" >NUL 2 >&1 Taskkill /F /T /IM "Dslogo2.exe" >NUL 2 >&1 Taskkill /F /T /IM "TxTicker.exe" >NUL 2 >&1 ::[PASO 5] Esperar que proceso BSplayer TERMINE de reproducir y se cierre después: Dar PLAY a Winamp, Abrir Dsclock, Abrir Dslogo y Dslogo2 ) Echo Set WshShell = CreateObject ("WScript.Shell" ) Echo Set oExec = WshShell.Exec ("BSplayer" ) Echo Do While oExec.Status = 0 )>"%TEMP%\winamp.vbs" Start /W wscript "%TEMP%\BSplayer.vbs" Del /Q " %TEMP%\BSplayer.vbs" ) START /D "%Programfiles%\DS Clock\" dsclock.exe FOR /R %%_ in (*DsLogo.exe ) do (" %%_" ) | FOR /R %%_ in (*DsLogo2.exe ) do (" %%_" ) :Winamp_Key :: Hotkeys Winamp: :: :: c=Pause :: x=Play :: ::[PASO 6] repetir hasta Etiqueta 1
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
:Winamp_Key :: Hotkeys Winamp: :: :: c=Pause :: x=Play :: Ping -n 3 LOCALHOST >NUL Porque la rutina " :Winamp_Key" solo contiene un "ping"? has eliminado la función por completo, en la primera página la tienes, vuelvela a copiar. Aparte: )>"%TEMP%\winamp.vbs" Start /W wscript "%TEMP%\BSplayer.vbs" Fíjate bien a donde redireccionas y lo que intentas ejecutar (no existe). ::[PASO 5] ) Echo Set WshShell = CreateObject("WScript.Shell") Echo Set oExec = WshShell.Exec("BSplayer") ... ) ( Echo Set WshShell = CreateObject("WScript.Shell" ^) Echo Set oExec = WshShell.Exec("BSplayer" ^) etc... )FOR /R %%_ in (*DsLogo.exe) do ("%%_") | FOR /R %%_ in (*DsLogo2.exe) do ("%%_") ¿Porque usas la pipe |? FOR /R %%_ in (*DsLogo*.exe) do ("%%_") saludos
|
|
« Última modificación: 26 Septiembre 2012, 12:39 pm por EleKtro H@cker »
|
En línea
|
|
|
|
Dsalomon
Desconectado
Mensajes: 52
|
Gracias maestro seguire tus consejos y por la noche hare una prueba...
|
|
|
En línea
|
|
|
|
Dsalomon
Desconectado
Mensajes: 52
|
Mastro me puedes explicar como funcionan estas lineas por que en realidad solo copie y pegue peno entiendo su funcionamiento, sobre todo de las teclas de winamp ) :Winamp_Key :: Hotkeys Winamp: :: :: c=Pause :: x=Play :: ( Echo Set objShell = WScript.CreateObject ("WScript.Shell" ^) Echo Success = objShell.AppActivate ("winamp" ^) Echo objShell.SendKeys " %~1" )>"%TEMP%\winamp.vbs" Start /W wscript "%TEMP%\winamp.vbs" Del /Q " %TEMP%\Winamp.vbs" )
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Ay señor... Con explicarte lo que hacen las lineas no sería suficiente, necesitas aprender lo que es un argumento... Esto llama a la etiqueta "Winamp_key" y le pasa un argumento, la " X". Si por error no se le pasa un argumento pues el código del interior no se ejecuta, así se evitan aún más errores xD. las lineas con dobles puntos :: son lineas de comentario, nada más. Se escribe un código VBS en el archivo "%TEMP%\winamp.vbs" El código VBS ya sabes lo que hace, envía el argumento de la etiqueta a winamp (La "X" o la "C"). No hay más. Saludos
|
|
|
En línea
|
|
|
|
|
|