Okay. Der er ikke kommet nogle svar, så here goes:
Jeg har en Emit-server kørende på min PC. Med den kan jeg streame mine film til mine venner (og mig selv, når jeg ikke er hjemme). Wake op er beskrevet mange steder, men at lukke PCen igen, er lidt sværere.
Nu er det jo ikke smart at lukke PCen, mens nogen bruger serveren, så derfor må shutdown-rutinen tjekke, om den er aktiv. Det er heller ikke smart, hvis der lukkes ned i samme øjeblik nogen vil se en anden film, men blot lige skal have den startet. Derfor er det bedst at vente lidt med evt nedlukning.
Jeg har bakset med et skript, der kører i baggrunden (startet med opgavestyringen og som gennemløbes hver 5. minut). Skripter leder efter en fil i en dropboxmappe eller som i mit tilfælde i en mappe på min NAS ftp-server. Findes denne fil, lukkes PCen, men ikke hvis nogen streamer film via Emit. Hvis det er tilfældet, ofrettes en "hold-fil", der får rutinen til at vente "en omgang" med nedlukningen. Rutinen er skrevet til Windows 7. Jeg ved ikke, om den kører på andre versioner, f.ex kan stierne være anderledes. Men her er den:
Dim fl2
Set fl2 = CreateObject("Scripting.FileSystemObject")
Dim fl1
Set fl1 = CreateObject("Scripting.FileSystemObject")
Dim objFSO, objFolder
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("c:\Users\<Brugers navn her>\AppData\Local\Temp\Emit\")
Dim oShell
Set oShell = CreateObject("WScript.Shell")
Const OverwriteExisting = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFSO = CreateObject("Scripting.FileSystemObject")
If (fl2.FileExists("c:\Users\<Brugers navn her>\AppData\Local\Temp\Emit\Hold.txt")) then
fl2.DeleteFile("c:\Users\<Brugers navn her>\AppData\Local\Temp\Emit\Hold.txt")
Else
If (objFolder.Files.Count = 0 And objFolder.SubFolders.Count = 0) Then
If (fl1.FileExists("<Dropbox eller NAS mappe, hvor du remote kan placere en fil>\<fil, du vil lukke computeren med>")) Then
fl1.DeleteFile("<Dropbox eller NAS mappe, hvor du remote kan placere en fil>\<fil, du vil lukke computeren med>")) ")
oShell.Run "%comspec% /c shutdown /s /t 5 /f", , TRUE
End If
Else
If (fl2.FileExists("c:\Users\<sti til der, hvor du gemmer en tom fil med navnet: Hold.txt>\Hold.txt")) Then
objFSO.CopyFile "c:\Users\<sti til der, hvor du gemmer en tom fil med navnet: Hold.txt>\Hold.txt", "c:\Users\<Brugers navn her>\AppData\Local\Temp\Emit\Hold.txt", OverwriteExisting
End If
End If
End If
________________
Det ser rodet ud, men kopier teksten ind i notepad eller lignende. Så burde det være læseligt.
(Efter alle de fejl, jeg har laver under prøvekørslen, tror jeg ikke, at der er noget, der kan gå galt, men nogen garanti kan jeg ikke give.)
Det mellem < og > er her du selv skal skrive noget.
Nu oploader du bare din "shutdownfil" remote, og så lukkes der ned. Skripter virker også, selv om du ikke bruger Emit. Det kan jo være, du sidder på Mallorca og tænker: fik jeg nu slukket for PCen? Så kan du gøre det med dette skript.