Hacer un menú sencillo con este Script

Iniciado por Meta, 19 Noviembre 2017, 07:22 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

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.

{
     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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

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 (cpp) [Seleccionar]

function mostrarMenu
{
     param (
           [string]$Titulo = ' Control bandeja del lector '
     )
     cls
     Write-Host "╔====================================╗"
     Write-Host "║    $Titulo    ║"
     Write-Host "╠====================================╣"
     Write-Host "║                                    ║"
     Write-Host "║    1) Abrir.                       ║"
     Write-Host "║    2) Cerrar.                      ║"
     Write-Host "║    3) Información.                 ║"
     Write-Host "║    S) Presiona 'S' para salir.     ║"
     Write-Host "║                                    ║"
     Write-Host "╚====================================╝"
}

do
{
     mostrarMenu
     Write-Host ""
     $input = Read-Host "      Elegir una Opción."
     switch ($input)
     {
           '1' {
                cls
                'Abriendo...'
                $items = (New-Object -com "WMPlayer.OCX.7").cdromcollection.item(0)           
                $items.eject()
                'Abierto.'
                Write-Host ""
           } '2' {
                cls
                'Segunda Opción'
           } '3' {
                cls
                'Información.'
           } 's' {
                return
           } 
     }
     pause
}
until ($input -eq 's')


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

Gracias.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

tincopasan

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 (python) [Seleccionar]

$items = (New-Object -com "WMPlayer.OCX.7").cdromcollection.item(0)           
                $items.close()


Meta

Lo he probado y no funciona. Pero no se ma había ocurrido. ;)

Tampoco este.
Código (cpp) [Seleccionar]
$items.closed()

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

#4
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 (cpp) [Seleccionar]
$MemDef = @"
[DllImport("winmm.dll", CharSet = CharSet.Ansi)]
  public static extern int mciSendStringA(
  string lpstrCommand,
  string lpstrReturnString,
  int uReturnLength,
  IntPtr hwndCallback);
"@

$winnm = Add-Type -memberDefinition $MemDef -ErrorAction 'SilentlyContinue' -passthru -name mciSendString
function Set-CDAudioDoor {
Param(
 [ValidateSet("open", "closed")][String[]]$Mode = 'open'
)
$winnm::mciSendStringA("set cdaudio door $mode", $null, 0,0)}

function mostrarMenu
{
    param (
          [string]$Titulo = ' Control bandeja del lector '
    )
    cls
    Write-Host "╔====================================╗"
    Write-Host "║    $Titulo    ║"
    Write-Host "╠====================================╣"
    Write-Host "║                                    ║"
    Write-Host "║    A) Abrir.                       ║"
    Write-Host "║    C) Cerrar.                      ║"
    Write-Host "║    I) Información.                 ║"
    Write-Host "║    S) Presiona 'S' para salir.     ║"
    Write-Host "║                                    ║"
    Write-Host "╚====================================╝"
}

do
{
    mostrarMenu
    $input = Read-Host "      Elegir una Opción"
    switch ($input)
    {
          'a' {
               cls
               'Abriendo...'
               Set-CDAudioDoor open
               'Abierto.'
               ' '
          } 'c' {
               cls
               'Cerrando...'
               Set-CDAudioDoor closed
               'Cerrado.'
          } 'i' {
               cls
               'PowerShell'
               '=========='
               Get-Host
          } 's' {
               return
          }  
    }
    pause
}
until ($input -eq 's')


Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/