none
Mejorar el menú en PowerShell RRS feed

  • Pregunta

  • Buenas:

    Quiero lograr hacer este menú en PowerShell, que al pulsar la tecla A o a, abra la bandeja del lector. El programa funciona bien, pero no me gusta la forma forma como lo hace, es decir. Pulso la tecla A o a, luego Enter para que abra la bandeja, luego otra vez Enter para volver al menú principal.

    La idea es, pulso A o a, abra la bandeja directamente, muestre el mensaje "Abierto." y a la espera de volver a pulsar otra tecla, no todo el rato con el Enter después.

    Espero que se entienda lo que quiero decir.

    Por ahora solo he hecho esto.



    $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')

    ¿Alguna sugerencia?

    Saludos.




    http://electronica-pic.blogspot.com

    jueves, 23 de noviembre de 2017 5:08

Todas las respuestas

  • Este post debería estar unido al hilo https://social.technet.microsoft.com/Forums/es-ES/30bf571b-145e-452a-8e0f-43f03f1cbc67/abrir-la-bandeja-del-disco?forum=powershelles

    Desiderio Ondo || Engineer

    jueves, 23 de noviembre de 2017 10:06