PowerShell: Märten Rodes, vlc.ps1
From ICO wiki
<source lang="powershell">
<#
.SYNOPSIS
Skript käivitab VLC Media Playeris internetiraadio ja sulgeb selle, kui arvuti lukustatakse.
.DESCRIPTION
Skript jookseb taustal ja avab automaatselt VLC Media Playeriga internetiraadio, kui arvuti ei ole lukus või kui arvuti tehakse lukust lahti. VLC suletakse, kui arvuti pannakse lukku.
.VERSION
2.0
.NOTES
Autor: Märten Rodes, AK31
- >
- Importida DLL-failist protseduur akna minimeerimiseks
$import = '[DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);' Add-Type -MemberDefinition $import -name NativeMethods -namespace Win32
function Stop-VLC {
- Sulgeda VLC Media Player
foreach($proc in Get-Process vlc*){$proc.CloseMainWindow()}
}
function Start-VLC {
# Käivitada VLC Media Player Start-Process "C:\Program Files\VideoLAN\VLC\vlc.exe" http://icecast.linxtelecom.com:8000/mania.mp3.m3u
# Leida VLC Media Player'i protsessi akna handle. Kui aken pole veel avanenud, siis oodata. do { # Oodata, kui aken pole veel avanenud Start-Sleep -Milliseconds 100
# Leida VLC Media Player'i protsessi akna handle foreach($proc in Get-Process vlc*){ $handle = $proc.MainWindowHandle } } # Korrata, kuni handle on leitud until ($handle -as [int] -gt 0)
# Minimeerida aken [Win32.NativeMethods]::ShowWindowAsync($handle, 2)
}
- Käivitamisel suletakse VLC
Stop-VLC $state = 'WAITING'
- Põhitsükkel kontrollib iga 0,5 sekundi tagant, kas arvuti on lukku pandud või lahti tehtud.
- Vajadusel käivitab või seiskab raadio
while ($true) {
Start-Sleep -Milliseconds 500
$locked = $false foreach($proc in Get-Process LogonUI*){ $locked = $true }
# Kui arvuti on lukus ja VLC töötab, siis lülitada see välja if (($locked -eq $true) -and ($state -eq 'RUNNING')) { Stop-VLC $state = 'WAITING' } # Kui arvuti ei ole lukus, aga VLC ei tööta, siis käivitada VLC elseif (($locked -eq $false) -and ($state -eq 'WAITING')) { Start-VLC $state = 'RUNNING' }
}