Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Попробуйте так (не проверялось):
читать дальше »
Код: Выделить весь код
Option Explicit

Dim objDictionary
Dim objFSO
Dim objWshShell

Dim strPath2Script
Dim strPath2DefSound
Dim elem

Dim objSWbemObjectEx


Set objDictionary = WScript.CreateObject("Scripting.Dictionary")
Set objFSO        = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell   = WScript.CreateObject("WScript.Shell")

With objFSO
	strPath2Script = .GetParentFolderName(WScript.ScriptFullName)
	
	objDictionary.Add 0, .BuildPath(strPath2Script, "Icon0.ico")
	objDictionary.Add 1, .BuildPath(strPath2Script, "Icon1.ico")
	
	For Each elem In objDictionary.Items
		If Not .FileExists(elem) Then
			WScript.Echo "Icon file [" & elem & "] not found"
			WScript.Quit 1
		End If
	Next
	
	For Each objSWbemObjectEx In WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").InstancesOf("Win32_OperatingSystem")
		Select Case objSWbemObjectEx.Version
			Case "6.0.6000", "6.0.6001", "6.0.6002", "6.1.7600", "6.1.7601", "6.2.9200" ' http://en.wikipedia.org/wiki/Windows_NT#Releases
				Select Case objSWbemObjectEx.OSArchitecture
					Case "32-bit" ' x86
						strPath2DefSound = .BuildPath(strPath2Script, "DefSound-x32.exe")
					Case "64-bit" ' x64
						strPath2DefSound = .BuildPath(strPath2Script, "DefSound-x64.exe")
				End Select
			Case Else
				WScript.Echo "Unsupported OS version:", objSWbemObjectEx.Version
				WScript.Quit 2
		End Select
		
		Exit For
	Next
	
	If .FileExists(strPath2DefSound) Then
		If WScript.Arguments.Count = 1 Then
			Select Case WScript.Arguments.Item(0)
				Case "0", "1"
					objWshShell.Run """" & strPath2DefSound & """ " & WScript.Arguments.Item(0), 0, True
					CreateShortcutOnDesktop Abs(Not CBool(WScript.Arguments.Item(0)))
				Case Else
					CreateShortcutOnDesktop 0
			End Select
		Else
			CreateShortcutOnDesktop 0
		End If
	Else
		WScript.Echo "Can't find [" & strPath2DefSound & "]"
		WScript.Quit 3
	End If
End With

Set objWshShell   = Nothing
Set objFSO        = Nothing
Set objDictionary = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub CreateShortcutOnDesktop(lngArgument)
	With objWshShell.CreateShortcut(objFSO.BuildPath(objWshShell.SpecialFolders("Desktop"), objFSO.GetBaseName(WScript.ScriptName) & ".lnk"))
		.TargetPath       = WScript.ScriptFullName
		.WorkingDirectory = strPath2Script
		.Arguments        = CStr(lngArgument)
		
		.IconLocation     = objDictionary.Item(lngArgument)
		.WindowStyle      = 0
		.Description      = "Shortcut to quick change default sound"
		'.Hotkey           = "CTRL+SHIFT+S"
		
		.Save
	End With
End Sub
'=============================================================================

Поместите рядом с этим файлом файлы «DefSound-x32.exe», «DefSound-x64.exe» (работа с утилитой основана на этой статье: EreTIk's Box » Утилиты » DefSound: установка аудио устройства по умолчанию), а также файлы иконок «Icon0.ico», «Icon1.ico». При желании можете раскомментировать строку, задающую горячую клавишу для создаваемого ярлыка, равно как и поменять там саму горячую клавишу.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:37, 09-11-2012 | #15