Avatar billede bfjmnemonic Nybegynder
04. november 2003 - 11:41 Der er 18 kommentarer og
1 løsning

VBS Progress Bar

Nogen der ved hvor man kan finde en pæn progress bar der faktisk virker, eller hvordan man laver en?
Avatar billede medions Nybegynder
04. november 2003 - 11:44 #1
Det kan du ikke i VBScript!

Det er Visual Basic du skal over til der!

//>Rune
Avatar billede adam_christensen Nybegynder
04. november 2003 - 12:51 #2
Hvis du ønsker at vise progress i et VBScript, så brug WScript.StdOut.Write og kør scriptet med cscript.exe i stedet for wscript.exe. Så vises output i en tekstbaseret command prompt.

Progress kan fx vises med punktum:
WScript.StdOut.Write "."
Avatar billede nmh Nybegynder
04. november 2003 - 13:26 #3
Hvorfor afviser du disse svar?
Der er ikke andre muligheder i VBscript.
Hvis du lagde dit script ind i en html-side, kunne du dog nok lave lidt, men ikke en rigtig progressbar.
Du kunne skrive til et inputfelt, og her ville du kunne få noget frem, der lignede, det du ønsker.
Jeg kan da godt lave et forslag, hvis det skulle have interesse.
Men hvis du ikke vil afvikle dit script i en browser via en html-side er der ikke noget at gøre.
Avatar billede Slettet bruger
04. november 2003 - 13:47 #4
Hvis du vil have en grafisk progress bar, kan du benytte internet explorer.

Nedenstående script bruger "*" til at vise script fremgang, men hvis du bruger en anden font, kan du i princippet lave hvad som helst!

Du kan også lave et html document der inkluderer en animeret gif, og så benytte objExplorer.Navigate til at loade documentet!

Set objExplorer = CreateObject("InternetExplorer.Application")
objExplorer.Navigate "blank:about"
objExplorer.ToolBar = False
objExplorer.StatusBar = False
objExplorer.Width = 400
objExplorer.Height = 200
objExplorer.Left = 0
objExplorer.Top = 0
objExplorer.Visible = True

Do While(objExplorer.Busy)
Loop

Set objDocument = objExplorer.Document

objDocument.Open
objDocument.Writeln "<html><head><title>Script Status</title></head>>"
objDocument.Writeln "<body bgcolor='white'>"
objDocument.Writeln "Retrieving service information. Please wait. <p>"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_Service")

For Each objService in colServices
    objDocument.Writeln "*"
Next

objDocument.Writeln "<br>Service information retrieved."
objDocument.Writeln "</body></html>"
WScript.Sleep 4000
objDocument.Close
objExplorer.Quit
Avatar billede Slettet bruger
04. november 2003 - 13:48 #5
nmh> Ovenstående script skal ikke køres i en browser, men starter derimod en ny instans af internet explorer, som der skrives til!
Avatar billede Slettet bruger
04. november 2003 - 13:51 #6
Avatar billede nmh Nybegynder
04. november 2003 - 17:04 #7
jjust>> Flot!! Ja, man lærer hele tiden noget nyt. :o)
Avatar billede bfjmnemonic Nybegynder
04. november 2003 - 17:44 #8
Derfor afviste jeg dit svar nmh :)

Se der var jo en mulighed.
Avatar billede bfjmnemonic Nybegynder
04. november 2003 - 17:53 #9
Kan det lade sig gøre at bruge f.eks. et bitmap billede til at lave en blå progress bar?
Avatar billede medions Nybegynder
04. november 2003 - 18:16 #10
Ja, du kan ligge en counter som ligger og tæller fx. til 5 og så lade din gif animation løbe op til 100%

Når så din counter er nået til sit interval, så lav en document.location='sidenavn.htm'

//>Rune
Avatar billede bfjmnemonic Nybegynder
04. november 2003 - 19:01 #11
medions: Jeg er ikke helt med?
Avatar billede bfjmnemonic Nybegynder
04. november 2003 - 19:02 #12
Hvordan styrer jeg hvor langt min Gif animation er nået?
Avatar billede medions Nybegynder
04. november 2003 - 21:38 #13
Det kan du ikke styre... Det er egentlig den eneste måde du kan gøre det på så det vil virke i de fleste browsere...

//>Rune
Avatar billede bfjmnemonic Nybegynder
05. november 2003 - 13:28 #14
medions: Jeg forstår ikke helt hvad jeg skal med tælleren, hvis jeg alligevel ikke kan styre hvor hurtigt mit gif animation skal køre?
Avatar billede medions Nybegynder
05. november 2003 - 14:00 #15
Du kan jo sætte den til at være mere end hvad gifbilledet tager at downloade fra et 56k. modem + giffens varighed. Idet den så er færdig med den tidssum, så skal den gøre en event derefter...

//>Rune
Avatar billede Slettet bruger
06. november 2003 - 01:08 #16
Jeg har rodet lidt videre, og tror nok at nedenstående er noget af det pæneste man kan lave! I hvert fald er det forholdsvist simpelt...

Læg mærke til at cursoren skifter til et timeglas når scriptet kører ;)

Set ie = CreateObject("InternetExplorer.Application")
ie.Height = 200
ie.Width = 300
ie.Navigate("about:blank")
ie.MenuBar = False
ie.StatusBar = False
ie.ToolBar = False

ie.Visible = True

Do until not ie.Busy
Loop

Set document = ie.Document

document.Writeln "<HTML>"
document.Writeln "<HEAD>"
document.Writeln "<TITLE>"
document.Writeln "<Script Progress>"
document.Writeln "</TITLE>"
document.Writeln "</HEAD>"
document.Writeln "<BODY>"
document.Writeln "Retrieving Service Information"
document.body.style.cursor = "wait"

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_Service")

CreateProgressBar colServices.count

i=0
For Each objService in colServices
    Progress i
    i = i + 1
Next

document.Writeln "Finished"
document.body.style.cursor = "default"
document.Writeln "</BODY>"
document.Writeln "</HTML>"

document.Close

WScript.Sleep 4000
ie.Quit

Private Sub CreateProgressBar (section)
    document.Writeln "<P>"
    document.Writeln "<TABLE id='progressbar' bordercolor='blue' border='1' rules='none' cellspacing='0'>"
    document.Writeln "<TR>"
    For i=0 To section - 1
        document.Writeln "<TD height='16' width='25'></TD>"
    Next
    document.Writeln "</TR>"
    document.Writeln "</TABLE>"
    document.Writeln "</P>"
End Sub

Private Sub Progress (section) 
    Set objTable = document.all.item("progressbar")
    Set row = objTable.rows(0)
    Set cell = row.cells(section)
    cell.bgcolor = "blue"   
End Sub
Avatar billede adam_christensen Nybegynder
06. november 2003 - 09:12 #17
jjust> Nice ;-)
Avatar billede Slettet bruger
09. november 2003 - 14:44 #18
bfjmnemonic> Kunne du ikke bruge svaret?
Avatar billede bfjmnemonic Nybegynder
12. december 2003 - 10:40 #19
Kanon .. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester