Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Смена иконки ярлыка командой в .bat (http://forum.oszone.net/showthread.php?t=246403)

Алексей_Мокшанов@vk 07-11-2012 13:53 2020789

Смена иконки ярлыка командой в .bat
 
Вопрос с предысторией (для пущего осознания ситуации)
изначально хотелось переключать "Устройство воспроизведения" в один клик, тут нашлось решение в виде утилиты DefSound
тк в DefSound реализована командная строка, народ смекнул и заваял
start.bat
Код:

IF exist log.txt goto loop1
echo 0>log.txt
DefSound-x32.exe 0
goto exit
:loop1
del log.txt
DefSound-x32.exe 1
:exit
taskkill /im DefSound-x32.exe

START.JS
Код:

var activex = new ActiveXObject("WScript.Shell");
activex.Run("start.bat", 0, true);

оба файлика требуется положить в папку к DefSound и запускать всю эту конструкцию с ярлыка созданного для START.JS
теперь у меня имеется проблема в индикации активного "Устройство воспроизведения", и мне думается что иконка ярлыка (созданного для START.JS) самый изящный способ
потому прошу откликнуться людей кто в состоянии дополнить (переделать) данную конструкцию для того что бы она не только переключала "Устройство воспроизведения" но и меняла иконку ярлыка
в системе имеется два устройства вывода звука, насколько я понимаю их в коде нумеруют как 0 и 1, чтоб далеко не отходить от устоявшегося обозначения будем считать что в папку со всеми файлами положены две иконки 0.ico и 1.ico, а на рабочем столе имеется ярлык START.lnk

не в тему: что выполняет (делает) данный код
читать дальше »
Код:

@ECHO OFF
SETLOCAL EnableDelayedExpansion

FOR /F "tokens=*" %%I IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render"') DO (
        SET AudCount = 0
        FOR /F "tokens=3" %%J IN ('REG QUERY "%%I"^|FINDSTR /I /C:"devicestate"') DO (
                IF /I "%%J" EQU "0x1" (
                        SET /a AudCount+=1
                        ECHO %%I>>"%TMP%\renderlist.txt"
                )
        )
)

IF /I %AudCount% NEQ 0 (
        SET DevID=0
        SET DevName=
        FOR /F "tokens=*" %%I IN (%TMP%\renderlist.txt) DO (
               
                FOR /F "tokens=2*" %%J IN ('REG QUERY "%%I\Properties" /v "{b3f8fa53-0004-438e-9003-51a46e139bfc},6"') DO (
                        SET DevName=%%K
                )
               
                FOR /F "tokens=2*" %%J IN ('REG QUERY "%%I\Properties" /v "{a45c254e-df1c-4efd-8020-67d146a850e0},2"') DO (
                        SET DevName=!DevName! - %%K
                )
               
                IF /I "!DevName!" EQU "%~1" (
                        CD /D "%~dp0"
                        IF /I "%PROCESSOR_ARCHITECTURE%" EQU "x86" DefSound-x32.exe !DevID! %~2
                        IF /I "%PROCESSOR_ARCHITECTURE%" EQU "amd64" DefSound-x64.exe !DevID! %~2
                        DEL /F "%TMP%\renderlist.txt"
                        GOTO :EOF
                )
                SET /a DevID+=1
        )
        DEL /F "%TMP%\renderlist.txt"
)

обнаружил это в DefSound.cmd, прилагался в архиве DefSound.zip тут, но про него не было ни слова, хочется знать его ценность и необходимость а также функционал

zion87 07-11-2012 22:06 2021126

А может сделать два ярлыка с разными иконками и копировать их bat-ом попеременно с автоматическим удаление перед копированием новогоИЛИ

Iska 08-11-2012 06:03 2021305

Цитата:

Цитата Алексей_Мокшанов@vk
ссылки на инструкции и мануалы не предлагать, требуется готовое решение имеющейся проблемы »

Желанию получить готовое решение должны предшествовать хотя бы минимальные усилия:

1. Разместить потребную информацию здесь же, а не посылать возжелавших помочь бегать по ссылкам.
2. Сообщить имя неназванного ярлыка на Рабочем столе.
3. Выложить здесь же Ваши «допустим 0.ico и 1.ico». Или это тоже — к «требуется готовое решение», Вам должен кто-то сделать?

zion87 08-11-2012 06:12 2021308

Iska, Капитан Тиг - «Хранитель Пиратского Кодекса Чести» :laugh:

Алексей_Мокшанов@vk 08-11-2012 09:25 2021356

Цитата:

Цитата zion87
А может сделать два ярлыка с разными иконками и копировать их bat-ом попеременно с автоматическим удаление перед копированием нового »

идея не так уж и плоха если бы не одно но, ярлыки фигурно разложены по рабочему столу, а если каждый раз создавать новый он будет липнуть к левому краю в "конец очереди" что не есть гуд и вовсе не по феншую (если например не удалять предварительно а с заменой то место сохраниться насколько мне известно), ИЛИ возможно где то близко но тоже врятли решает поставленную задачу (даже если там и имеется необходимая составляющая то мне не подсилу её вычленить и применить), потому и требуется именно смена иконки ярлыка
спасибо за попытку

Цитата:

Цитата Iska
Желанию получить готовое решение должны предшествовать хотя бы минимальные усилия:
1. Разместить потребную информацию здесь же, а не посылать возжелавших помочь бегать по ссылкам.
2. Сообщить имя неназванного ярлыка на Рабочем столе.
3. Выложить здесь же Ваши «допустим 0.ico и 1.ico». Или это тоже — к «требуется готовое решение», Вам должен кто-то сделать? »

1. Отчасти согласен, но не хотелось разводить дубли да и кликнуть на ссылку не считаю за маломальский труд
2. я думаю если в коде его назвать START.lnk а потом пояснить что мол вместо START.lnk впиши название своего, так будет вполне приемлемо
3. а я думаю человеку составляющему (дополняющему) код по барабану что за картинки кроются под 0.ico и 1.ico, главное их имена прописать в коде правильно, а потом пояснить мол не забудь их в папку с прогой и скриптами положить, так будет вполне приемлемо

zion87 08-11-2012 19:45 2021714

если не нравится идея с копированием (из-за фигурного расположения) то возможен вариант с
Код:

attrib 1.lnk +h
attrib 2.lnk -h

изменение в расположение всего одна клетка...

Алексей_Мокшанов@vk 08-11-2012 21:00 2021784

Цитата:

Цитата zion87
если не нравится идея с копированием (из-за фигурного расположения) то возможен вариант с
Код:
attrib 1.lnk +h
attrib 2.lnk -h
изменение в расположение всего одна клетка... »

не могли бы вы пояснить мне как и куда применить эти две строчки и что в этоге получиться

zion87 08-11-2012 22:04 2021846

вот скрипт меняющий иконку на рабочем столе - не перемещая...
Код:

var vbOKCancel = 1;
var vbInformation = 64;
var vbCancel = 2;
var WSHShell = WScript.CreateObject("WScript.Shell");
Welcome();
var DesktopPath = WSHShell.SpecialFolders("Desktop");
var MyShortcut = WSHShell.CreateShortcut(DesktopPath + "\\Блокнот.lnk");
MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe");
MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%");
MyShortcut.WindowStyle = 4;
MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings("c:\\icq.ico");
MyShortcut.Save();
function Welcome() {
    var intDoIt;
}

создаешь два файла ico1.js и ico2.js
и
Код:

IF exist log.txt goto loop1
echo 0>log.txt
DefSound-x32.exe 0
ico1.js
goto exit
:loop1
del log.txt
DefSound-x32.exe 1
ico2.js
:exit
taskkill /im DefSound-x32.exe

пример скрипта для ярлыка notepad.exe меняем на свою программу и все работает ... )))

если не понятно
var MyShortcut = Название ярлыка .lnk
MyShortcut.TargetPath = Расположение .exe
MyShortcut.WorkingDirectory = Рабочая директория .exe
MyShortcut.IconLocation = Расположение файла .ico

ОБЯЗАТЕЛЬНОЕ ИСПОЛЬЗОВАНИЕ ДВОЙНОГО СЛЕША \\ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

zion87 08-11-2012 22:24 2021859

Прошу прощения за мои разные мысли но простое замещение одного и того же файла происходит без перемещения по рабочему столу ))))
приведу пример
[code]
IF exist log.txt goto loop1
echo 0>log.txt
DefSound-x32.exe 0
copy /y c:\1.ico "рабочий стол\0.ico"
goto exit
:loop1
del log.txt
DefSound-x32.exe 1
copy /y c:\2.ico "рабочий стол\0.ico"
:exit
taskkill /im DefSound-x32.exe

Алексей_Мокшанов@vk 09-11-2012 00:06 2021930

Цитата:

Цитата zion87
вот скрипт »

он прям меняет иконку или пересоздаёт ярлык с новой иконкой?
Цитата:

Цитата zion87
простое замещение одного и того же файла »

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

в общем оба метода опробовал, оба работают, и оба занимаются затиранием старого ярлыка тем или иным способом, хотелось бы конечно изменять именно свойства ярлыка
спасибо за помощь

Iska 09-11-2012 00:51 2021958

Алексей_Мокшанов@vk, поместите следующий код:
читать дальше »
Код:

Option Explicit

Dim objDictionary
Dim objFSO
Dim objWshShell

Dim strPath2DefSound


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

With objDictionary
        .Add 0, "C:\Мои иконки\Icon0.ico"
        .Add 1, "C:\Мои иконки\Icon1.ico"
End With

strPath2DefSound = objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), "DefSound-x32.exe")

If objFSO.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 & "]"
End If

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 = objFSO.GetParentFolderName(WScript.ScriptFullName)
                .Arguments        = CStr(lngArgument)
               
                .WindowStyle      = 0
                '.Hotkey          = "CTRL+SHIFT+S"
                .IconLocation    = objDictionary.Item(lngArgument)
                .Description      = "Shortcut to quick change default sound"
               
                .Save
        End With
End Sub
'=============================================================================


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

Cозданный скрипт *.vbs при первом своём запуске создаст на Рабочем столе текущего пользователя одноимённый себе ярлык. Далее Вы можете просто пользоваться созданным ярлыком.

Алексей_Мокшанов@vk 09-11-2012 01:31 2021976

Цитата:

Цитата Iska
файл с расширением «.vbs» »

работает на ура, но хочется уточнить, в данном случае будет происходить затирание старого ярлыка на новый с другими параметрами?
можете ли Вы сделать так что бы пути к файлам иконок не были жёстко привязаны, тобиш были только указаны имена Icon0.ico и Icon1.ico? потому как иконки всегда будут лежать в тойже папке что и .vbs а вот папка с DefSound имеет все шансы на перемещение
а неплохая идея определять разрядность ОС, хотя если это шибко сложно и так хорошо
спасибо за помощь

Iska 09-11-2012 01:48 2021980

Цитата:

Цитата Алексей_Мокшанов@vk
работает на ура, но хочется уточнить, в данном случае будет происходить затирание старого ярлыка на новый с другими параметрами? »

Я не проверял, какими именно функциями WinAPI библиотека «wshom.ocx» реализует вызов метода «.CreateShortcut()» (этот метод предназначен как для создания, равно и модификации существующего ярлыка).

Цитата:

Цитата Алексей_Мокшанов@vk
можете ли Вы сделать так что бы пути к файлам иконок не были жёстко привязаны, тобиш были только указаны имена Icon0.ico и Icon1.ico? потому как иконки всегда будут лежать в тойже папке что и .vbs а вот папка с DefSound имеет все шансы на перемещение »

Да. Могу.

Цитата:

Цитата Алексей_Мокшанов@vk
а неплохая идея определять разрядность ОС, хотя если это шибко сложно и так хорошо »

Я могу попробовать. Но проверять сие — Вам: у меня нет прямого доступа ни к Vista, ни к Windows 7, равно как и их x64 вариантам. Вы готовы потрудиться совместно на этой почве?

Алексей_Мокшанов@vk 09-11-2012 01:56 2021983

Цитата:

Цитата Iska
Да. Могу. »

сделайте если это вас не затруднит
Цитата:

Цитата Iska
Вы готовы потрудиться совместно на этой почве? »

в наличие Windows 7 x64, конечно проверю, для теста наверно надо чтоб создавался log.txt чтоб в нём можно было поглядеть как отработал скрипт

Iska 09-11-2012 02:37 2021989

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

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». При желании можете раскомментировать строку, задающую горячую клавишу для создаваемого ярлыка, равно как и поменять там саму горячую клавишу.

Алексей_Мокшанов@vk 09-11-2012 02:50 2021995

Цитата:

Цитата Iska
Попробуйте так »

"Устройство воспроизведения" переключает этот вариант скрипта, иконка (ярлык) меняется
проверил определение разрядности ОС простым удалением DefSound-x64.exe, да ругается что не может найти его, удаление DefSound-x32.exe не приводит ни к какой реакции, следовательно работает
(даже и не знаю для чего сделан DefSound-x64.exe, ведь и DefSound-x32.exe справляется)

yurfed 09-11-2012 03:02 2021998

Цитата:

Цитата Алексей_Мокшанов@vk
можете ли Вы сделать так что бы пути к файлам иконок не были жёстко привязаны, »

Цитата:

Цитата Алексей_Мокшанов@vk
а неплохая идея определять разрядность ОС, хотя если это шибко сложно и так хорошо »

Цитата:

Цитата Алексей_Мокшанов@vk
сделайте если это вас не затруднит »

А начиналось с просьбы дать только ложку к обеду :)

Алексей_Мокшанов@vk 09-11-2012 03:21 2022000

Цитата:

Цитата yurfed
А начиналось с просьбы дать только ложку к обеду »

как хорошо что мир не без добрых людей :butcher:

Iska 09-11-2012 03:54 2022004

Цитата:

Цитата Алексей_Мокшанов@vk
даже и не знаю для чего сделан DefSound-x64.exe, ведь и DefSound-x32.exe справляется) »

Отпишитесь автору: EreTIk's Box » Контакты. Полагаю, он намного лучше меня сумеет дать ответ на Ваш вопрос.

koliambia 26-12-2012 18:02 2053930

Эта меняющаяся иконка только на рабочем столе (прокатывает) работает-так я понял,получилось у меня.
А чтоб такая иконка текущего аудиоустройства в трее висела.Ведь в трее стандартная Громкость иконка остаётся неизменной,при переключении разных аудиоустройств,но при этом выводится всплывающая подсказка от текущем аудиоустройстве, и отображает его уровень громкости.
Наверно нереально такое?

ПопробЫвал Windows Tray Icons Creator.exe-не много не то, :) но и не получилось

tentacleattack 04-05-2013 13:45 2144272

Iska,
Спасибо большое всё работает идеально.
Хотел спросить как изменить скрипт так чтобы можно было задействовать 3 устройства, у меня это телевизор, наушники и колонки.
Телевизор стоит на 1 месте и если не получиться сделать с 3 устройствами, то как сделать так чтобы переключение было между 2 и 3 устройством, не нашёл где поставить.

Iska 04-05-2013 16:34 2144343

Скрипт работает по принципу триггера, переключая два устройства. Как думаете организовать переключение между тремя устройствами?

tentacleattack 05-05-2013 11:29 2144684

Iska,
Я решил для себя сделать другим методом, остановиться на bat и скриптах, без ярлыков и без vbs, и поставить выполнение скриптов на дополнительные кнопки клавиатуры, у меня Tt eSPORTS Challenger pro.
Но возникла другая проблема, после перезагрузки и попытки выполнить скрипт через кнопку вылетает ошибка http://take.ms/pneWIC, как с этим бороться пока что не придумал, но думаю дело уже в клавиатуре, приходится переназначать кнопки заново.

Iska 05-05-2013 13:28 2144732

Цитата:

Цитата tentacleattack
Но возникла другая проблема, после перезагрузки и попытки выполнить скрипт через кнопку вылетает ошибка http://take.ms/pneWIC, »

Приведите код JScript из указанного файла.

tentacleattack 05-05-2013 18:54 2144896

Iska,
Код:

var activex = new ActiveXObject("WScript.Shell");
activex.Run("start1.bat", 0, true);

Собственно там же лежит start1.bat:
Код:

DefSound-x32.exe 1
goto exit

и аналогичные start0.bat start2.bat с аналогичными скриптами.
После назначения на кнопку всё работает идеально, но после перезагрузки вылезает такая лажа, хотя в интерфейсе драйвера пути сохраняются.

Iska 05-05-2013 19:57 2144927

Зачем Вам «start1.bat»?
Код:

(new ActiveXObject("WScript.Shell")).Run("\"Путь\\DefSound-x32.exe\" 1", 0, true)
P.S. Не проверялось.

tentacleattack 05-05-2013 20:43 2144962

Iska,
Я не большой знаток всего этого что нашёл в теме из того и склепал, там было для 2 в 1 бат файле, я решил что так тоже будет работать.
Наверное по правильному нужно сделать по другому, но я не в курсе как =)

ps не работает http://take.ms/WJyG6B

Iska,
Я наверное правдо туповат, извините что отнял время, сдел всё через ярлыки, работает или нет не проверял, но в любом случае беспокоить не буду больше =)
Хотя через ярлыки не работает вообще через клавиатуру.... делема =(

Iska 05-05-2013 23:35 2145076

Цитата:

Цитата tentacleattack
ps не работает http://take.ms/WJyG6B »

tentacleattack, давайте сделаем так: упакуйте Ваш скрипт JScript в архив и приложите к сообщению.

tentacleattack 06-05-2013 09:32 2145169

Вложений: 1
Iska, Вот
Но мне всёравно не кажется что дело в скрипте, помоему просто дрова кривые, ибо подсветка так же не включается при перезагрузке, хотя должна.

Iska 06-05-2013 18:59 2145516

Цитата:

Цитата tentacleattack
Iska, Вот »

Я просил по второму варианту:
Цитата:

Цитата tentacleattack
ps не работает http://take.ms/WJyG6B »

Цитата:

Цитата tentacleattack
ибо подсветка »

???

tentacleattack 07-05-2013 09:38 2145840

Вложений: 1
Цитата:

Цитата Iska
??? »

В драйвере если включить подсветку клавиатуры она так же слетает при перезагрузке компа.

koliambia 07-05-2013 10:52 2145891

Iska у tentacleattack модная клава,с подсветкой клавиш.
Свои 5 копеек вставлю..
Я tentacleattack свой способ переключенмя расскажу...
Через созданные ярлыки я сделал привязку на гор кнопки.
У меня ос win7 конфиг:1 системник 2 моника.Звук встроенный в материнке,и звук юсб колонки.
Навесил на один ярлык монитор и звук,на второй ярлык другой моник с юсб колонками.Пример ярлыка:%comspec% /c start C:\Windows\System32\DisplaySwitch.exe 1&&start F:\Архив\DefSound-x32\DefSound-x32.exe 0
Ярлыки поставил в панель быстрого запуска и запускаю win+1 и win+2
Также очень хорошо работают ATNSOFT Key Manager ATNSOFT Key Remapper.Может Детектить и назначить на любую кнопку,и даже под конкретно указанную прогу.Сбрасывать нужно триал каждый месяц-Наверное для вас tentacleattack это способ наилучший!
Может решение проще найдётся и через скрипты и батники

tentacleattack 08-05-2013 09:35 2146435

koliambia,
Спасибо обязательно попробую сегодня. Но как уже писал, думаю клава меня подводит, зараза такая.
Не сомневаюсь что на сочетание клавиш с дополнительной прогой будет работать на ура, но вот то что это сочетание будет работает на клаве как надо, и постоянно, это уже вопрос. А если так то это уже мои проблемы =) Буду терроризироват производителя и их форумы, ибо для windows 8 драйвера не захотели устанавливаться, и я поставил для 7.

dimaz137 25-10-2013 00:07 2240651

Вложений: 1
Win 7. Переключение между 1-м и 3-м устройством воспроизведения + создание ярлыка на раб столе с меняющимися иконками.
В некоторых случаях понадобится правка vbs скрипта (кол-во TAB может быть на 1 меньше, зависит от активной кнопки "Настроить" в окне "Звук").

Zuluries 12-11-2013 09:49 2252611

Цитата:

Цитата Iska
поместите следующий код:
читать дальше »
в файл с расширением «.vbs», заменив пути к файлам иконок на Ваши собственные. Поместите этот файл в любое потребное место. Поместите рядом с этим файлом файл «DefSound-x32.exe» (работа с утилитой основана на этой статье: EreTIk's Box » Утилиты » DefSound: установка аудио устройства по умолчанию). В случае ОС соответствующей разрядности, используйте «DefSound-x64.exe», одновременно заменив и в скрипте имя исполняемого файла на «DefSound-x64.exe» (я не стал усложнять скрипт определением разрядности ОС и выбором соответствующего исполняемого файла).
Cозданный скрипт *.vbs при первом своём запуске создаст на Рабочем столе текущего пользователя одноимённый себе ярлык. Далее Вы можете просто пользоваться созданным ярлыком. »

Всё работает, огромное спасибо камраду Iska, но есть одно но, не могу разобраться как настроить переключение между определенными устройствами. Например сейчас переключаются между наушниками и S/PDIF а нужно между динамиками и HDMI

AlexIII 25-12-2013 20:10 2278491

Zuluries, наверное, самое простое - отключить неиспользуемые (в настройках) и оставив 2 используемые.


Время: 13:32.

Время: 13:32.
© OSzone.net 2001-