Pisałem ostatnio, że vbs nie obsługuje grafiki ale nie ma przeszkód żeby korzystać z programów zewnętrznych. Najprościej to podać tylko adres obrazka, ale wtedy zostanie wyświetlony w domyślnej przeglądarce co nie wygląda zbyt elegancko.
Napisałem więc prosty programik o nazwie image.exe do wyświetlania grafik i ktory można ściągnąć tutaj:
http://omega.pdg.pl/counter4.php?id=/pliki/image.exe
sam programik image.exe też może wyświetlać rożne fotki w tym celu tworzymy skrót do niego i w skrocie podajemy parametr ktorym jest adres obrazka do wyświetlenia. Np. C:\vbs\image.exe fotka.jpg albo tworzymy skrypt vbs o treści:
'============
Set oWS = WScript.CreateObject(“WScript.Shell”)
oWS.Run “image.exe fotka.jpg”
'============
'Jeżeli chcemy go użyć w skrypcie z quizem, to musimy dokonać pewnych zmian w samym skrypcie:
'Zmieniamy deklaracje: Dim pytanie(255, 2) na Dim pytanie(255, 3) bo przybędzie nowa zmienna.
'Tutaj deklaracje potrzebne do wyświetlenia obrazka oraz jego usunięcia umieszczane na pocżatku skryptu.
'===============
Set ows = WScript.CreateObject(“WScript.Shell”)
Dim objWMIService, objProcess, colProcess
Dim strComputer, strProcessKill:strComputer = “.”:strProcessKill = “‘image.exe’”
'==============
'Tutaj podajemy adres obrazka jako parametr do programu image.exe czyli coś takiego “image.exe obrazek.jpg” gdy program image.exe i obrazek są w tym samym katalogu. Obrazek może być też w innym katalogu i wówczas piszemy np. obrazki\obrazek.jpg. Program nie obsługuje plikow png tylko jpg, bmp lub gif.
'==============
liczbapytan=liczbapytan+1:pytanie(liczbapytan-1, 0) = “Czy Polska leży w Ameryce?”: pytanie(liczbapytan-1, 1) = 7: pytanie(liczbapytan-1, 2) = “MsgBox”: pytanie(liczbapytan-1, 3) = “image.exe naj.jpg”
===============
'Tu wyświetlenie obrazka:
'===============
If pytanie(LosowyNumerPytania, 3) <> “” and odpDobra=true Then oWS.Run pytanie(LosowyNumerPytania, 3)
'===============
'Tutaj zamykamy obrazek przechodząc do następnego pytania.
'==============
If pytanie(LosowyNumerPytania, 3) <> “” then
Set objWMIService = GetObject(“winmgmts:” & “{impersonationLevel=impersonate}!\” & strComputer & “\root\cimv2”)
Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
end if
==============
'W końcowym efekcie w pętli głównej skryptu otrzymamy coś takiego:
For i = 0 To IlePytan - 1:numer=i+1
odp="":czas2=time
OdpDobra=true:czas2=time:NumerPytania = Int(pytan * Rnd): WylosowanyZnak = InStr(znaki, Mid(Znaki, NumerPytania + 1, 1))
LosowyNumerPytania = Asc(Mid(Znaki, WylosowanyZnak, 1))
while odp <> pytanie(LosowyNumerPytania, 1)
If pytanie(LosowyNumerPytania, 2) = "MsgBox" Then
If pytanie(LosowyNumerPytania, 3) <> "" and odpDobra=true Then oWS.Run pytanie(LosowyNumerPytania, 3)
odp = MsgBox(pytanie(LosowyNumerPytania, 0), vby, "quiz - " & numer & "/" & ilepytan): If odp = 2 Then Exit For
if czas2>=czas1+MinutTestu/24/60 then PrzekroczonyCzas=". Przekroczony czas.": Exit For
Else
odp = InputBox(pytanie(LosowyNumerPytania, 0),"quiz - " & numer & "/" & ilepytan): If odp = "" Then Exit For
if czas2>=czas1+MinutTestu/24/60 then PrzekroczonyCzas=". Przekroczony czas.": Exit For
End If
If odp = pytanie(LosowyNumerPytania, 1) Then
if OdpDobra=true then poprawnychodpowiedzi = poprawnychodpowiedzi + 1
If pytanie(LosowyNumerPytania, 3) <> "" then
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
end if
Else
MsgBox ("Niestety, to zła odpowiedź."):OdpDobra=false
end if
wend
pytan = pytan - 1: Znaki = Replace(Znaki, Chr(LosowyNumerPytania ), "")
Next
Ciekawe czy uda Ci się z tymi grafikami.