Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 19 Noviembre 2017, 07:22 am



Título: Hacer un menú sencillo con este Script
Publicado por: Meta en 19 Noviembre 2017, 07:22 am
Hola a todos y a todas:

Quiero hacer un menú sencillo que las funciones se hará después.

Por ahora he hecho esto de esta manera haciendo pruebas.

Citar
╔====================================╗
║     Control bandeja del lector     ║
╠====================================╣
║                                    ║
1) Primera Opción
2) Segunda Opción
3) Tercera Opción
S) Presiona 'S' para salir
Elegir una Opción:

Como puedes ver, pulso el número 2), luego Enter para poder entrar en el menú. Mi idea es, desde que pulses la tecla número 2), entre directamente a la Segunda opción sin tener que pulsar Enter.

Código:
{ 
     param (
           [string]$Titulo = ' Control bandeja del lector '
     )
     cls
     Write-Host "╔====================================╗"
     Write-Host "║    $Titulo    ║"
     Write-Host "╠====================================╣"
     Write-Host "║                                    ║"

     
     Write-Host "1) Primera Opción"
     Write-Host "2) Segunda Opción"
     Write-Host "3) Tercera Opción"
     Write-Host "S) Presiona 'S' para salir"
}

do
{
     mostrarMenu
     $input = Read-Host "Elegir una Opción"
     switch ($input)
     {
           '1' {
                cls
                'Primera Opción'
           } '2' {
                cls
                'Segunda Opción'
           } '3' {
                cls
                'Tercera Opción'
           } 's' {
                return
           } 
     }
     pause
}
until ($input -eq 's')


¿Cómo se hace lo que quiero?

Saludos.


Título: Re: Hacer un menú sencillo con este Script
Publicado por: Meta en 20 Noviembre 2017, 15:41 pm
Buenas:

He mejorado el ménú y puedo abrir la bandeja del disco, pero no me se el código de cerrar la bandeja.

Código
  1. function mostrarMenu
  2. {
  3.     param (
  4.           [string]$Titulo = ' Control bandeja del lector '
  5.     )
  6.     cls
  7.     Write-Host "╔====================================╗"
  8.     Write-Host "║    $Titulo    ║"
  9.     Write-Host "╠====================================╣"
  10.     Write-Host "║                                    ║"
  11.     Write-Host "║    1) Abrir.                       ║"
  12.     Write-Host "║    2) Cerrar.                      ║"
  13.     Write-Host "║    3) Información.                 ║"
  14.     Write-Host "║    S) Presiona 'S' para salir.     ║"
  15.     Write-Host "║                                    ║"
  16.     Write-Host "╚====================================╝"
  17. }
  18.  
  19. do
  20. {
  21.     mostrarMenu
  22.     Write-Host ""
  23.     $input = Read-Host "      Elegir una Opción."
  24.     switch ($input)
  25.     {
  26.           '1' {
  27.                cls
  28.                'Abriendo...'
  29.                $items = (New-Object -com "WMPlayer.OCX.7").cdromcollection.item(0)            
  30.                $items.eject()
  31.                'Abierto.'
  32.                Write-Host ""
  33.           } '2' {
  34.                cls
  35.                'Segunda Opción'
  36.           } '3' {
  37.                cls
  38.                'Información.'
  39.           } 's' {
  40.                return
  41.           }  
  42.     }
  43.     pause
  44. }
  45. until ($input -eq 's')

¿Cuál es el código para cerrar el disco?

Gracias.


Título: Re: Hacer un menú sencillo con este Script
Publicado por: tincopasan en 21 Noviembre 2017, 00:37 am
la verdad es que no tengo idea que lenguaje estas usando, pero lo primero que se me ocurre es usar básicamente lo mismo que para abrir, pero intentando con lo mas común para cerrar:
Código
  1. $items = (New-Object -com "WMPlayer.OCX.7").cdromcollection.item(0)            
  2.                $items.close()
  3.  


Título: Re: Hacer un menú sencillo con este Script
Publicado por: Meta en 21 Noviembre 2017, 01:07 am
Lo he probado y no funciona. Pero no se ma había ocurrido. ;)

Tampoco este.
Código
  1. $items.closed()

Saludos.


Título: Re: Hacer un menú sencillo con este Script
Publicado por: Meta en 22 Noviembre 2017, 14:20 pm
Hola:

Ya he sido capaz de abrir y cerrar la bandeja con PowerShell. LA fomra como es el menú no me hace gracia. Hay que pulsar una letra, luego Enter y después Enter para pulsar otra tecla más para cerra la bandeja.

Mi idea es que al pulsar la letra A o a, Abra la bandeja y preparado para que pulses otra letra. Nada de pulsar la A y luego Enter, para luego otra vez Enter. Si saben hacerlo mejor, avisen. De momento aquí funciona, es capaz de abrir y cerrara la bandeja.

Código
  1. $MemDef = @"
  2. [DllImport("winmm.dll", CharSet = CharSet.Ansi)]
  3.   public static extern int mciSendStringA(
  4.   string lpstrCommand,
  5.   string lpstrReturnString,
  6.   int uReturnLength,
  7.   IntPtr hwndCallback);
  8. "@
  9.  
  10. $winnm = Add-Type -memberDefinition $MemDef -ErrorAction 'SilentlyContinue' -passthru -name mciSendString
  11. function Set-CDAudioDoor {
  12. Param(
  13.  [ValidateSet("open", "closed")][String[]]$Mode = 'open'
  14. )
  15. $winnm::mciSendStringA("set cdaudio door $mode", $null, 0,0)}
  16.  
  17. function mostrarMenu
  18. {
  19.     param (
  20.           [string]$Titulo = ' Control bandeja del lector '
  21.     )
  22.     cls
  23.     Write-Host "╔====================================╗"
  24.     Write-Host "║    $Titulo    ║"
  25.     Write-Host "╠====================================╣"
  26.     Write-Host "║                                    ║"
  27.     Write-Host "║    A) Abrir.                       ║"
  28.     Write-Host "║    C) Cerrar.                      ║"
  29.     Write-Host "║    I) Información.                 ║"
  30.     Write-Host "║    S) Presiona 'S' para salir.     ║"
  31.     Write-Host "║                                    ║"
  32.     Write-Host "╚====================================╝"
  33. }
  34.  
  35. do
  36. {
  37.     mostrarMenu
  38.     $input = Read-Host "      Elegir una Opción"
  39.     switch ($input)
  40.     {
  41.           'a' {
  42.                cls
  43.                'Abriendo...'
  44.                Set-CDAudioDoor open
  45.                'Abierto.'
  46.                ' '
  47.           } 'c' {
  48.                cls
  49.                'Cerrando...'
  50.                Set-CDAudioDoor closed
  51.                'Cerrado.'
  52.           } 'i' {
  53.                cls
  54.                'PowerShell'
  55.                '=========='
  56.                Get-Host
  57.           } 's' {
  58.                return
  59.           }  
  60.     }
  61.     pause
  62. }
  63. until ($input -eq 's')

Saludos.