code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Dim oWMP
Dim colCDROMs, i
Set oWMP = CreateObject("WMPlayer.OCX.7")
Set colCDROMs = oWMP.cdromCollection
if colCDROMs.Count >= 1 then
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next
WScript.Sleep SetTimer()
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next
End If
oWMP.close
Set colCDROMs = Nothing
Set oWMP = Nothing
Function SetTimer()
Dim MinSpec
Minspec = 10
SetTimer = (MinSpec - 1) * 1000
End Function |
Vet
Ik heb nog nooit in VBScript geprogrammeerd... Dit was alleen google werk met een minimale .NET, QuickBasic en Delphi kennis. Waarschijnlijk is het weliswaar zo inefficient als het kan, omdat ik de logica niet goed ken. Maar het werkt wel.
Waar nu Minspec = 10 staat is 10 het aantal secondes. Hehe, kan ook een random waarde worden... Ik ga alvast zoeken
Nieuwe versie :
code:
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
| Dim oWMP
Dim colCDROMs, i
Dim Wait
Set oWMP = CreateObject("WMPlayer.OCX.7")
Set colCDROMs = oWMP.cdromCollection
if colCDROMs.Count >= 1 then
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next
WScript.Sleep SetTimer()
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next
End If
oWMP.close
Set colCDROMs = Nothing
Set oWMP = Nothing
Function SetTimer()
Random()
SetTimer = (Wait - 1) * 1000
End Function
Function Random()
Randomize
Wait = Int(10 * Rnd())
End Function |
Zo, een beetje aangepast. Nu is ie dus random. Nu wordt er een tijd gekozen tussen de 0 en 10 secondes voordat de cd-lades weer dicht gaat.
Oke, nog een. Deze zal je collega helemaal gek maken. Nu dus met een loop :
code:
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
| Do
Dim oWMP
Dim colCDROMs, i
Dim Wait
Set oWMP = CreateObject("WMPlayer.OCX.7")
Set colCDROMs = oWMP.cdromCollection
if colCDROMs.Count >= 1 then
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next
WScript.Sleep SetTimer(10)
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next
End If
oWMP.close
Set colCDROMs = Nothing
Set oWMP = Nothing
WScript.Sleep SetTimer(20)
Loop Until 1 > 2
Function SetTimer(a)
Random(a)
SetTimer = (Wait - 1) * 1000
End Function
Function Random(a)
Randomize
Wait = Int(a * Rnd())
End Function |
Om de maximaal 20 seconde
WScript.Sleep SetTimer(20) gaat de CD-lade's open. En om de maximaal 10 seconde
WScript.Sleep SetTimer(10) gaan de lade's weer dicht. Ik weet alleen niet of CD-ROM spelers dit een dag volhouden anders zou het nare gevolgen kunnen hebben.

(Niet mijn verantwoording !)
Je kan anders ook een vaste waarde instellen voor het opnieuw herhalen van dit geintje. Dit kan door de regel
WScript.Sleep SetTimer(20) te vervangen met
SetTimer = (60 - 1) * 1000 Nu gaan de lade's om de 60 seconde's open.
Om dit programma te beeindigen zou je op Ctrl+Alt+Del moeten drukken en wscript.exe uit de proceslijst weg moeten halen. (Aanklikken, taak beeindigen)
Graag zie ik reactie's op de inefficientie.

Want een loop totdat 1 groter dan 2 is lijkt mij toch geen oplossing.
[
Voor 70% gewijzigd door
Verwijderd op 21-04-2005 20:59
. Reden: Random cd-lade dicht, Script in een loop ]