Vb, Vba, Vbs ... Help!

Status
Niet open voor verdere reacties.

Juzzz

Gebruiker
Lid geworden
15 jan 2008
Berichten
281
IK ben sinds kort begonnen met vbs .. atans dat dacht ik..
Ik heb het over vbs bestanden en niet geïntegreerd in een html pagina.

als ik iets zoek voor vbs dan kom ik meestal op websites die het beschrijven in HTML files.

Ik heb dit script kunnen schrijven m.b.v. internet:

Code:
dim Sec, Min, Hour
dim shutdown
Sec=InputBox("How many seconds before shutdown?" & vbCrLf & vbCrLf &_
		 "Type:" & vbCrLf &_
		 "Min for minutes" & vbCrLf &_
		 "Hour for hours")
If Sec = "min" Then
	Min=InputBox("How many minutes before shutdown?")
	shutdown = "shutdown -s -f -t " & Min * "60"
ElseIf Sec = "hour" Then
	Hour=InputBox("How many hours before shutdown?")
	shutdown = "shutdown -s -f -t " & Hour * "60" * "60"
Else
	shutdown = "shutdown -s -f -t " & Sec
End If 

set objShell = CreateObject("WScript.Shell")
objShell.Run shutdown

en opgeslagen als .vbs
dit doet het nu helemaal maar is dit nu vbs of vba?

Ook wil ik werken m.b.v. goto, zoals in batch bestanden, is dit mogenlijk in "vbs" bestanden?


alvast bedankt
 
oopslaan in .vbs

en voor HTML

<script type="Vbscript">

</script>
 
VBS staat voor Visual Basic Script - en is dus bijvoorbeeld het scriptje dat jij hebt geschreven. Stukjes VBS kunnen ook ik html-pagina's verwerkt worden, maar dingen als shutdown natuurlijk niet (denk aan document.write('deze text is via vbs gemaakt')...)

VBA staat voor Visual Basic for Applications - en is ge-integreert in MS office (word, excell, pp, etc). Je kan het vinden door in de app ALT+F11 te drukken (iig word...). Het is eigenlijk de 'echte' Visual Basic, maar dan minder geavanceerd.

VB staat voor Visual Basic en is een programeertaal. Zie wikipedia.





VBS heeft aardig wat dingen en lijkt nogal op VB, maar mist een aantal dingen. Een voorbeeld is dat als je var's declareerd (dimt) je geen datatype hoeft op te geven zoals string, integer, etc.


Over je GOTO-vraag:dit zou moeten werken...
Code:
'vbs
msgbox "hallo daar"

goto ZomaarWat

msgbox "deze zie je niet!"

ZomaarWat:
msgbox "deze weer wel!"

maar ik raad je echter functies aan. Bovendien kan je met VBS veel makkelijker lussen, if-then's etc. maken dan met Batch-bestanden. Zoek anders gewoon een VBS tutorial op ;)

:thumb:
 
VBS staat voor Visual Basic Script - en is dus bijvoorbeeld het scriptje dat jij hebt geschreven. Stukjes VBS kunnen ook ik html-pagina's verwerkt worden, maar dingen als shutdown natuurlijk niet (denk aan document.write('deze text is via vbs gemaakt')...)

VBA staat voor Visual Basic for Applications - en is ge-integreert in MS office (word, excell, pp, etc). Je kan het vinden door in de app ALT+F11 te drukken (iig word...). Het is eigenlijk de 'echte' Visual Basic, maar dan minder geavanceerd.

VB staat voor Visual Basic en is een programeertaal. Zie wikipedia.





VBS heeft aardig wat dingen en lijkt nogal op VB, maar mist een aantal dingen. Een voorbeeld is dat als je var's declareerd (dimt) je geen datatype hoeft op te geven zoals string, integer, etc.


Over je GOTO-vraag:dit zou moeten werken...
Code:
'vbs
msgbox "hallo daar"

goto ZomaarWat

msgbox "deze zie je niet!"

ZomaarWat:
msgbox "deze weer wel!"

maar ik raad je echter functies aan. Bovendien kan je met VBS veel makkelijker lussen, if-then's etc. maken dan met Batch-bestanden. Zoek anders gewoon een VBS tutorial op ;)

:thumb:

Thanks.
Hoe maak je functies aan of heb je daar een tutorial voor? (website plz).

even een vraagje: heb je een multiple inputbox? en dan niet in een html pagina?
of iedergeval andere knoppen dan OK of annuleren? (kan je daar dan ook een functie aan vast leggen?)

Dat lussen in een batch bestand is aardig lastig inderdaad maar wel mogenlijk ^^,
bv:
Code:
SET /P what=What?:
IF /I "%what%"=="Help" (
   goto HELP
) ELSE (
IF /I "%what%"=="?" (
   goto HELP
) ELSE (
   goto TWO
)
)
 
Laatst bewerkt:
Code:
SET /P what=What?:
IF /I "%what%"=="Help" (
   goto HELP
) ELSE (
IF /I "%what%"=="?" (
   goto HELP
) ELSE (
   goto TWO
)
)
Code:
'vbs:
dim x
x = inputbox("Hallo daar, What?","titel","standaard")
if x = "help" then
   HelpFunctie()
elseif x = "?" then
   HelpFuntie()
else
   Anderefunctie()
end if

Function HelpFunctie()
   msgbox "Hallo daar"
end function

Function Anderefunctie()
   dim zomwaarwat
    zomaarwat = msgbox "dit is dus een andere funx. Laten we het resultaat terugechoen:"
    msgbox zomaarwat
end function
:D
het kan natuurlijk veel mooier enzo, maar het gaat om het idee =)
 
ok THANKS heb nu dit gemaakt:

Code:
'variablen
dim time
dim shutdown
dim cansel


'functions
Function Sec()
   time = time
end Function

Function Min()
   time = time * "60"
end Function

Function Hour()
   time = time * "60" * "60"
end Function

Function Cshutdown()
   shutdown = "shutdown -a"
end Function


'inputboxes
time=InputBox("How many seconds before shutdown?" & vbCrLf & vbCrLf &_
	     "Type:" & vbCrLf &_
	     "Min for minutes" & vbCrLf &_
	     "Hour for hours", "Shutdown your pc", "", 1, 1)
If time = "min" Then
	time=InputBox("How many minutes before shutdown?", "Shutdown your pc in minutes", "", 1, 1)
	Min()
ElseIf time = "hour" Then
	time=InputBox("How many hours before shutdown?", "Shutdown your pc in hours", "", 1, 1)
	Hour()
Else
	Sec()
End If 

shutdown = "shutdown -s -f -t " & time

set objShell = CreateObject("WScript.Shell")
objShell.Run shutdown


'cansel
Cansel=InputBox("Do you want to cansel the shutdown?", "Cansel the Shutdown", "yes", 1, 1)
If Cansel = "yes" Then
	Cshutdown()
	objShell.Run shutdown
End If
 
Aardig. Hoewel je *cansel* met een c schrijft (cancel)

Dit is dezelfde code, maar dan iets *netter* en *korter* en *beter* (noot de **'s) - leer je er nog eens wat van:
Code:
'variablen
dim time
dim shutdown
dim cancel
dim sInput

'invullen
time = 0 'dit zodat als er iets fout gaat het in ieder geval 0 seconde is

'vraag naar de tijd
sInput = InputBox("How many seconds before shutdown?" & vbCrLf & vbCrLf &_
		"Type:" & vbCrLf &_
		"Min for minutes" & vbCrLf &_
		"Hour for hours", "Shutdown your pc", "", 1, 1)

select case sInput
	case "min"
		time = val(InputBox("How many minutes before shutdown?", "Shutdown your pc in minutes", "", 1, 1))
		time = time * 60
	case "hour
		time = val(InputBox("How many hours before shutdown?", "Shutdown your pc in hours", "", 1, 1))
		time = time * 3600
	case else
		time = time
end select


shutdown = "shutdown -s -f -t " & time

set objShell = CreateObject("WScript.Shell")
objShell.Run shutdown


'cancel
cancel = InputBox("Do you want to cancel the shutdown?", "Cansel the Shutdown", "yes", 1, 1)
If Cansel = "yes" Then
	shutdown = "shutdown -a"
	objShell.Run shutdown
End If

een paar nieuwe dingen:

1. in plaats van 'if-else-if-else' is het sneller/mooier om een 'select case' te gebruiken. Zie je code, het wijst zichzelf een beetje.
2. Je hoeft niet steeds die functies aan te roepen - een functie schrijven voor 1 regel is een beetje dubbel. Eigenlijk zijn functies handig om iets wat je vaak moet herhalen te doen. Scheelt regels, nu kost het juist regels.
3. vermenigvuldigen doe je met cijfers, niet met strings - dus *"60" moet *60 zijn. Hier zal het wel gewoon werken, maar het is *eigenlijk* verkeerd.
4. De functie val() (zit ingebouwd in VB(s/a) pakt van een string het getal. Stel dat iemand in je inputbox "hallo" typt in plaats van bv. 45 seconde, kan het wel eens fout gaan. Met de val() zal er 0 uitkomen indien er bv. "hallo" getypt word, in plaats van dat er een error komt.
5. Door de var 'time' 2x te gebruiken gaat het fout als iemand direct een getal typt i.p.v. 'Hour" of "Min". Daarom, nieuwe var.

:thumb:
 
Laatst bewerkt:
O.o THANKS.
dat is echt inderdaat makkelijker.. maarja ben nog maar ene beginner met VBS.

nu wil ik alleen weten of er een multiple inputbox bestaat.

zodat je in één keer: type (shutdown, restart, logoff), comment, en time kan invoeren.

Ps. ik wil dat zelf maken wil alleen weten hoe ik dan kan realiseren?
Multile inputbox OF keuze knoppen.

Edit:
je had de code ene beetje fout (rood is wat je fout had)
Code:
'variablen
dim time
dim shutdown
dim cancel
dim sInput

'invullen
time = 30

'vraag naar de tijd
sInput = InputBox("How many seconds before shutdown?" & vbCrLf & vbCrLf &_
		"Type:" & vbCrLf &_
		"min for minutes" & vbCrLf &_
		"Hour for hours", "Shutdown your pc", "", 1, 1)

select case sInput
	case "min"
		time = val(InputBox("How many minutes before shutdown?", "Shutdown your pc in minutes", "", 1, 1))
		time = [COLOR="Red"]sInput[/COLOR] * 60
	case [COLOR="Red"]"hour"[/COLOR]
		time = val(InputBox("How many hours before shutdown?", "Shutdown your pc in hours", "", 1, 1))
		time = [COLOR="Red"]sInput[/COLOR] * 3600
	case else
		time = [COLOR="Red"]sInput[/COLOR]
end select


shutdown = "shutdown -s -f -t " & time

set objShell = CreateObject("WScript.Shell")
objShell.Run shutdown


'cancel
cancel = InputBox("Do you want to cancel the shutdown?", "Cansel the Shutdown", "yes", 1, 1)
If [COLOR="Red"]Cancel[/COLOR] = "yes" Then
	shutdown = "shutdown -a"
	objShell.Run shutdown
End If


ps. hoe kan je een quot ("") in ene string zetten?
bv: shutdown = "shutdown -" & what & " -f -m \\" & pc & " -c " & com & " -t " & time

maar die com (comment) moet in de CMD code tussen ""
cmd help: -c "opmerking" Commentaar tijdens afsluiten (maximaal 127 tekens)
 
Laatst bewerkt:
een quote gaat lastig, als het kan gebruik ik dan altijd enkele ( ' ) quote, maar zoniet kan je dit gebruiken:
Code:
sString & chr(34) & sAnotherstring
Chr() echo't de character van een asciiz-waarde - 34 is de ascii code voor ( " ) quote.

je had de code ene beetje fout (rood is wat je fout had)
eh eh eh, iets te snel geweest ^_^"


nu wil ik alleen weten of er een multiple inputbox bestaat.
kort antwoord: nee.
zodat je in één keer: type (shutdown, restart, logoff), comment, en time kan invoeren.
Het punt is dat je geen formulieren kan maken met VBS. Het is alleen de code, en er is geen standaard ding voor een form (zoals er is voor msgbox en inputbox).

wat je wel kan doen is het beide opvragen. Dan doe je dus zoiets:
Code:
x = inputbox("Hallo. Geef de tijd die je wilt wachten in het volgende formaat: 'Min: 5 Hour: 3 Sec 8' (voor 3 uur en 5 minuten en 8 seconde)","titel","Hour 0 Min 5")
en deze string daarna gaan onderzoeken op wat er in staat. Dit word lastig omdat iemand ook kan invullen:
Min 5
Min5
Min5Hour5
Hour4 Min 3
Hour 4 Hour 4

etc etc
je script zal dus extreem groot worden om al die UI (user input) te filteren & selecteren.

:thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan