Всем привет, меня интересует как можно программно, перезагрузить(отключить\включить) USB Port на котором весит девайс. При этом не трогая девайс руками! Вот есть программа - http://support.microsoft.com/kb/311272/ru => это возможно... но как?
Не уверен на 100%, что мой способ будет действенным, но попробуй. В диспетчере устройств отключить выбранное юсб устройство.потом при необходимости его включить. По идее, должно работать (я так блютус отключаю периодически на ноуте). Также, можно попробывать автоматизировать действия с помощью, например, autoit.
Каждому свое. Согласен, что аутоитом такое делать некошерно, но если человеку надо рабочий вариант, он абсолютно не шарит в программинге и ему пох. на то, что это непрофесионально, то аутоит вполне сойдет
вообще всё проще некуда. есть DLL и в ней ей функций отключения устройства. В Win XP когда отключаеш флешку, то можно отследить запуск процесса rundll32 с указанием этой DLL, апишки и параметров. т.е. тупо программно отключить дивайс, а потом подключить. в XP это была hotplug.dll
1. Способ к сожалению с отключение в диспетчере устройств - в этой ситуации не пашет. Устройство продолжает работу. 2. Нужно отключать/включать 3G USB Modem модели Huawei. 3. WMI порыл немного нашёл только перезагрузку ADSL модема. Не могу понять подойдёт ли она мне. Code: void RestartADSL(GUID *guid) { SP_PROPCHANGE_PARAMS pcp; pcp.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER); pcp.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE; pcp.Scope = DICS_FLAG_CONFIGSPECIFIC; pcp.StateChange = DICS_PROPCHANGE; pcp.HwProfile = 0; HDEVINFO hDevInfo = SetupDiGetClassDevs(guid, 0, 0, 0); SP_DEVINFO_DATA DevInfoData; DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA); SetupDiEnumDeviceInfo(hDevInfo, 0, &DevInfoData); SetupDiSetClassInstallParams(hDevInfo, &DevInfoData, &pcp.ClassInstallHeader, sizeof(pcp)); SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, &DevInfoData); return; } P.S. Можно ли считать модем накопителем?) Что за способ проще?