-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconsole-menu-gui.ps1
More file actions
59 lines (52 loc) · 1.26 KB
/
console-menu-gui.ps1
File metadata and controls
59 lines (52 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
$host.ui.RawUI.WindowTitle = “My application"
function Display-Menu($selected){
CLS
write-Host ""
foreach($m in $menu){
if($m -eq $selected){
Write-Host " " -NoNewline
Write-Host " $m " -foregroundColor DarkBlue -backgroundColor White
}else{
Write-Host " " -NoNewline
Write-Host " $m " -foregroundColor White -backgroundColor DarkBlue
}
}
}
function Enter-Menu($selected){
CLS
Write-Host $selected
}
function Move-Menu($cur,$dir){
$i = $menu.IndexOf($selected)
$ni = $i - [int]$dir
if($ni -ne -1 -and $ni -ne $menu.Length){
$selected = $menu[$ni]
}
return $selected
}
# Main menu that will show at start
$menu = @(
"Option A"
"Option B"
"Option C"
"Option D"
)
# Default selection
$selected = "Option A"
$loop = 1
Display-Menu $selected
while($loop -eq 1){
$k = ([console]::ReadKey()).Key
switch($k){
"UpArrow" {
$selected = Move-Menu $selected "1"
Display-Menu $selected
}
"DownArrow" {
$selected = Move-Menu $selected "-1"
Display-Menu $selected
}
"Enter" { Enter-Menu $selected }
"Escape" { $loop = 0 }
}
}