2016-10-28 6 views
2

Я изучаю скрипт/код в VBScript (HTA) и стараюсь как можно более чистый и минималистичный код. Довольно сложно, когда я только начал писать сценарии 2 месяца назад: pКак упростить этот код VBScript?

Итак, я создал эту очень упрощенную деку с HTA, чтобы играть и учиться, и мне было интересно, можно ли упростить этот повторяющийся код?

Я пропустил код HTML и CSS.

Dim oPlayer : Set oPlayer = CreateObject("WMPlayer.OCX") 

Sub OnClickButtonSound_01() 
    oPlayer.URL = "Sound01.mp3" 
    oPlayer.settings.volume = 100 
    oPlayer.controls.play 
End Sub 
Sub OnClickButtonSound_02() 
    oPlayer.URL = "Sound02.mp3" 
    oPlayer.settings.volume = 100 
    oPlayer.controls.play 
End Sub 
Sub OnClickButtonSound_03() 
    oPlayer.URL = "Sound03.mp3" 
    oPlayer.settings.volume = 100 
    oPlayer.controls.play 
End Sub 
Sub OnClickButtonSoundStop() 
    oPlayer.close 
End Sub 

Это прекрасно работает, но я думаю, что OPlayer часть может быть упрощена, или нет, я не знаю.

Все звуки находятся в том же каталоге, что и файл .hta. Я читал о функциях VBS, но мне трудно понять, как это применимо к моему коду.

+0

Если вы хотите другой подход вместо использования ActiveX Wmplayer, вы можете использовать тег 'bgsound' th at может быть совместим с HTA! я сделал это в прошлом, если вы хотите поделиться им с дырочным кодом, просто скажите мне! – Hackoo

+0

Я всегда готов изучить новые методы, поэтому, пожалуйста, разделите. – WatskeBart

+0

Хорошо проверить мой новый ответ :) – Hackoo

ответ

3

EDIT: попробуйте это вместо этого. В основном вы назначаете идентификатор внутри своей кнопки и ссылаетесь на этот идентификатор в коде VB.

HTML:

<input type="button" class="sndButton" id="01" value="Sound 01" onclick="OnClickButtonSound()"> 
<input type="button" class="sndButton" id="02" value="Sound 02" onclick="OnClickButtonSound()"> 
<input type="button" class="sndButton" id="03" value="Sound 03" onclick="OnClickButtonSound()"> 

VB:

Dim oPlayer : Set oPlayer = CreateObject("WMPlayer.OCX")  

Sub OnClickButtonSound() 
    oPlayer.URL = "Sound" + window.event.srcelement.id + ".mp3" 
    oPlayer.settings.volume = 100 
    oPlayer.controls.play 
+0

Итак, если я это правильно понимаю, код кнопки HTML будет выглядеть так: '' – WatskeBart

+0

Проверьте мои изменения, которые должны сработать. –

+0

Получил это. Это выглядит даже лучше :) Большое спасибо – WatskeBart

1

Это еще один Approch вместо того, чтобы использовать ActiveX из WMplayer, вы можете использовать тег bgsound, который может быть совместим с ОМТ:

<html> 
<HTA:APPLICATION 
     ID = "Music" 
     icon="http://files.softicons.com/download/social-media-icons/free-large-twitter-icons-by-aha-soft/ico/Audio.ico"  
     APPLICATIONNAME="Music" 
     SCROLL="no" 
     navigable="no" 
     selection="no" 
     showintaskbar="yes" 
     singleinstance="no" 
     innerborder="no" 
     maximizebutton="no" 
     minimizebutton="yes" 
     border="dialog" 
     borderstyle="normal" 
     caption="yes" 
     contextMenu="no" 
     sysmenu="yes" 
> 
<head> 
<link rel="stylesheet" media="screen" type="text/css" title="design_encoder" href="&#0104;&#0116;&#0116;&#0112;&#0058;//&#0104;&#0097;&#0099;&#0107;&#0111;&#0111;&#0046;&#0097;&#0108;&#0119;&#0097;&#0121;&#0115;&#0100;&#0097;&#0116;&#0097;&#0046;&#0110;&#0101;&#0116;/&#0100;&#0101;&#0115;&#0105;&#0103;&#0110;&#0095;&#0101;&#0110;&#0099;&#0111;&#0100;&#0101;&#0114;&#0046;&#0099;&#0115;&#0115;"/> 

</head> 
<SCRIPT LANGUAGE="VBScript"> 
Dim TimerID,vbtxt,CopyRight 
Dim refresh 
Dim STRHTML 
CopyRight = " by © Hackoo 2013" 
'vbtxt = MusicAuHasard() & CopyRight 
VBvitesse="500" 

Function VBScroll_Title(vbtxt) 
    Document.title=vbtxt 
    vbtxt=mid(vbtxt,2,len(vbtxt)) & left(vbtxt,1) 
End Function 

Sub stoper() 
    Clear=ClearInterval(refresh) 
End Sub 

Sub CenterWindow(x,y) 
    window.resizeTo x,y 
    iLeft = window.screen.availWidth/2 - x/2 
    itop = window.screen.availHeight/2 - y/2 
    window.moveTo ileft, itop 
End Sub 

Sub Window_Onload 
CenterWindow 440,470 
refresh=setInterval("VBscroll_title(vbtxt)",VBvitesse,"Vbscript") 
Call ChargerMusic(11) ' Intro for DJ 
'Sleep 90 ' Sleep for 1 min and 30s 
'Call StartMusic() ' Start a Random Music 
End Sub 

Function MusicAuHasard() 
Dim MyURL,ListMusic 
MyURL = ChrW(104)&ChrW(116)&ChrW(116)&ChrW(112)&ChrW(58)&ChrW(47)&ChrW(47)&ChrW(104)&ChrW(97)&ChrW(99)&ChrW(107)&ChrW(111)&ChrW(111)&ChrW(46)&ChrW(97)&ChrW(108)&ChrW(119)&ChrW(97)&ChrW(121)&ChrW(115)&ChrW(100)&ChrW(97)&ChrW(116)&ChrW(97)&ChrW(46)&ChrW(110)&ChrW(101)&ChrW(116)&ChrW(47) 
URL1 = MyURL & "don.mp3" 
URL2 = MyURL & "Matrix.mp3" 
URL3 = MyURL & "Snap.mp3" 
URL4 = MyURL & "Pitbull.mp3" 
URL5 = MyURL & "mydream.mp3" 
URL6 = MyURL & "Rihanna.mp3" 
URL7 = MyURL & "feeling.mp3" 
URL8 = MyURL & "lavie.mp3" 
URL9 = MyURL & "Collide.mp3" 
URL10 = MyURL & "IbizaMix.mp3" 
URL11 = MyURL & "DJHackoo.mp3" 
ListMusic = array(URL1,URL2,URL3,URL4,URL5,URL6,URL7,URL8,URL9,URL10,URL11) 
    Randomize 
    For i = 0 To UBound(ListMusic) 
     j = Int((UBound(ListMusic) - i + 1) * Rnd + i) 
     tmp = ListMusic(i) 
     ListMusic(i) = ListMusic(j) 
     ListMusic(j) = tmp 
    Next 
MusicAuHasard=tmp 
vbtxt = MusicAuHasard & CopyRight 
End Function 

Sub StopMusic() 
    MaMusic.InnerHTML = "" 
    vbtxt = " La Musique est arrêtée par l'utilisateur !" 
End Sub 


Sub StartMusic() 
Dim STRHTML 
STRHTML = "<br>" 
STRHTML = STRHTML & "<bgsound src="&MusicAuHasard()&" loop=""infinite"">" 
MaMusic.InnerHTML = STRHTML 
End Sub 

Function ListMusic(Element) 
Dim URL(12) 
Dim MyURL 
MyURL = ChrW(104)&ChrW(116)&ChrW(116)&ChrW(112)&ChrW(58)&ChrW(47)&ChrW(47)&ChrW(104)&ChrW(97)&ChrW(99)&ChrW(107)&ChrW(111)&ChrW(111)&ChrW(46)&ChrW(97)&ChrW(108)&ChrW(119)&ChrW(97)&ChrW(121)&ChrW(115)&ChrW(100)&ChrW(97)&ChrW(116)&ChrW(97)&ChrW(46)&ChrW(110)&ChrW(101)&ChrW(116)&ChrW(47) 
URL(1) = MyURL & "don.mp3" 
URL(2) = MyURL & "Matrix.mp3" 
URL(3) = MyURL & "Snap.mp3" 
URL(4) = MyURL & "Pitbull.mp3" 
URL(5) = MyURL & "mydream.mp3" 
URL(6) = MyURL & "Rihanna.mp3" 
URL(7) = MyURL & "feeling.mp3" 
URL(8) = MyURL & "lavie.mp3" 
URL(9) = MyURL & "Collide.mp3" 
URL(10) = MyURL & "IbizaMix.mp3" 
URL(11) = MyURL & "Intro_DJ.mp3" 
URL(12) = MyURL & "DJHackoo.mp3" 
    ListMusic=URL(Element) 
    vbtxt = ListMusic & CopyRight 
End Function 

Sub ChargerMusic(X) 
Dim STRHTML 
STRHTML ="<br>" 
STRHTML = STRHTML & "<bgsound src="&ListMusic(X)&" loop=""infinite"">" 
MaMusic.InnerHTML = STRHTML 
End Sub 

Sub DownloadMe() 
Dim Titre,objFSO,Ws,objXMLHTTP,SourceDir,FullName,arrFN,Tab,URL,strHDLocation,objADOStream,Command,Start 
Titre = "Downloading MP3 by © Hackoo 2013" 
Set objFSO = Createobject("Scripting.FileSystemObject") 
FullName = replace(Music.commandLine,chr(34),"") 
arrFN=split(FullName,"\") 
FileName = arrFN(ubound(arrFN)) 
SourceDir=replace(FullName,FileName,"") 
Set Ws = CreateObject("wscript.Shell") 
URL = InputBox("Tapez ou collez l'URL dans le champ de saisie Exemple : "&Dblquote("http://hackoo.alwaysdata.net/IbizaMix.mp3")&"",Titre,"http://hackoo.alwaysdata.net/IbizaMix.mp3") 
If URL = "" Then Exit Sub 
Tab = split(url,"/") 
DownloadFolder = "Download_Hackoo_Music" 
strHDLocation = SourceDir & DownloadFolder & "\" & Tab(UBound(Tab)) 
If objFSO.Fileexists(strHDLocation) Then 
    MsgBox "The File "& Dblquote(strHDLocation) &" Exist ! ",48,"The File "& Dblquote(strHDLocation) &" Exist ! " 
    Exit Sub 
    else 
'MsgBox DownloadFolder 
'MsgBox strHDLocation 
CreerRep(SourceDir & DownloadFolder) 
MsgBox "The download of " & Dblquote(Tab(UBound(Tab))) & " is in progress ! ",64,"The download of " & Dblquote(Tab(UBound(Tab))) & " is in progress ! " 
If URL = "" Then WScript.Quit 
Set Ws = CreateObject("WScript.Shell") 
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") 
objXMLHTTP.open "GET", URL, false 
objXMLHTTP.send() 
If objXMLHTTP.Status = 200 Then 
    Set objADOStream = CreateObject("ADODB.Stream") 
    objADOStream.Open 
    objADOStream.Type = 1 'adTypeBinary 
    objADOStream.Write objXMLHTTP.ResponseBody 
    objADOStream.Position = 0 'Set the stream position to the start 
    objADOStream.SaveToFile strHDLocation 
    objADOStream.Close 
    Set objADOStream = Nothing 
    End if 
End If 
Set objXMLHTTP = Nothing 

MsgBox "The Download of " & Dblquote(Tab(UBound(Tab))) & " is finished ! ",64,"The Download of " & Dblquote(Tab(UBound(Tab))) & " is finished ! " 
Command = "Cmd /c start explorer "& Dblquote(strHDLocation) &" " 
Start = Ws.Run(Command,0,False) 
End Sub 

Function Dblquote(str) 
    Dblquote = chr(34) & str & chr(34) 
End Function 

Sub CreerRep(Chemin) 
Set objFSO = Createobject("Scripting.FileSystemObject") 
    If Not objFSO.FolderExists(chemin) Then 
     CreerRep(objFSO.GetParentFolderName(chemin)) 
     objFSO.CreateFolder(chemin) 
    End If 
End Sub 
</SCRIPT> 

<body> 

<center> 
<input type=Button OnClick="ChargerMusic(1)" STYLE ="cursor: hand;" Value=" Don "> 
<input type=Button OnClick="ChargerMusic(2)" STYLE ="cursor: hand;" Value=" Matrix "> 
<input type=Button OnClick="ChargerMusic(3)" STYLE ="cursor: hand;" Value=" Rhythm "> 
<input type=Button OnClick="ChargerMusic(4)" STYLE ="cursor: hand;" Value=" Pitbull "> 
<input type=Button OnClick="ChargerMusic(5)" STYLE ="cursor: hand;" Value=" Dream "> 
<input type=Button OnClick="ChargerMusic(6)" STYLE ="cursor: hand;" Value=" Rihanna "> 
<input type=Button OnClick="ChargerMusic(7)" STYLE ="cursor: hand;" Value=" Feeling "> 
<input type=Button OnClick="ChargerMusic(8)" STYLE ="cursor: hand;" Value=" La Vie "> 
<input type=Button OnClick="ChargerMusic(9)" STYLE ="cursor: hand;" Value=" Collide "> 
<input type=Button OnClick="ChargerMusic(10)" STYLE ="cursor: hand;" Value="IbizaMix"> 
<input type=Button OnClick="ChargerMusic(12)" STYLE ="cursor: hand;" Value="HackooMix"><br><br> 

<input type="button" value="Music ON" OnClick="StartMusic()" STYLE ="cursor: hand;"><INPUT TYPE="Button" VALUE="Music OFF" ONCLICK="StopMusic()" STYLE ="cursor: hand;"> 
<span id="MaMusic"></span> 
<DIV id="Splash" STYLE="background-image:url(http://hackoo.alwaysdata.net/laser.gif); cursor: hand; Height:300;Width:400;Border:0.1mm solid black;" OnClick="DownloadMe()"> 
<center> 
    <marquee DIRECTION="UP" HEIGHT="350" WIDTH="350" SCROLLAMOUNT="2" title="Click on me to download The Best Music ever listen !"> 
    <center><font face="Comic sans MS" color=RED size=10 STYLE ="cursor: hand;"><b>DJ Hackoo for you In the Mix</b></font></center> 
    <br><br> 
    <center><font face="Comic sans MS" color=RED STYLE ="cursor: hand;">Music for ever</b></font></center> 
    <br><center><font face="Comic sans MS" color=RED STYLE ="cursor: hand;">DJ © Hackoo 2013<br><br></font></center> 
    <br><center><img src="http://hackoo.alwaysdata.net/DJ2.gif"></center> 
    <br><center><img src="http://hackoo.alwaysdata.net/DJ3.gif"></center> 
    <br><center><img src="http://hackoo.alwaysdata.net/DJ4.gif"></center> 
    <br><center><img src="&#104;&#116;&#116;&#112;&#58;&#47;&#47;&#110;&#115;&#109;&#48;&#53;&#46;&#99;&#97;&#115;&#105;&#109;&#97;&#103;&#101;&#115;&#46;&#99;&#111;&#109;&#47;&#105;&#109;&#103;&#47;&#50;&#48;&#49;&#49;&#47;&#48;&#55;&#47;&#50;&#51;&#47;&#47;&#49;&#49;&#48;&#55;&#50;&#51;&#48;&#55;&#52;&#49;&#52;&#48;&#49;&#51;&#49;&#49;&#48;&#52;&#56;&#53;&#48;&#54;&#52;&#49;&#57;&#46;&#103;&#105;&#102;"></center> 
    </marquee> 
</center> 
</DIV> 
</center> 
</body> 
</html> 
+0

Спасибо! Посмотрите довольно сложно: p – WatskeBart

Смежные вопросы