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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] *WMI* | Как программно удалить устройтсво? (http://forum.oszone.net/showthread.php?t=199783)

pva 17-02-2011 21:29 1615667

*WMI* | Как программно удалить устройтсво?
 
Здравствуйте все! У меня раз в день глючит модем, которое можно оживить так:
  1. удалить модем, сылающийся на порт
  2. удалить порт
  3. обновитьс список устройств (чтобы порт добавился)
  4. добавить модем
Другие способы не прокатывают, хочу этот автоматизировать. Как найти его класс через WMI я выяснил, но удалить его и обновить устройства - что-то туплю. Подскажите, кто что знает?

Beyound 17-02-2011 21:53 1615686

)) чесно - это из разряда "здраствуйте, у меня у машины мотора нет, но кататься хота, куда лучше поставить цепь для педалей"? а если по теме я слышал о WMI Code Creator, может это то что тебе нужно?

pva 17-02-2011 22:17 1615705

Продолжая метафору: "мотор у машины есть. Педаль газа жать надоело. Ищу вентиль автостарта". По теме: ещё есть большой MSDN, где описано то, что выдаёт WMI Code Creator. Так вот, по поводу классов Win32_SerialPort: есть метод Restart, который тупо не реализован.

Нашёл вот что:
Код:

Just guessing but try these :
rundll32 cfgmgr32.dll ,CM_Reenumerate_DevNode
rundll32 cfgmgr32.dll ,CM_Locate_DevNodeA

Нифига не работает

Код:

RunDll32.exe Syssetup.dll,UpdatePnpDeviceDrivers
Настолько ядрёная вещь, что понаделала двойников некоторых устройств, выбила нафиг вай-фай, который заработал только после перезагрузки. На такие жертвы я не согласен. Ищем ещё.

2 метода оставлены на закуску:
Код:

'example of AppActivate and SendKeys

set WshShell = CreateObject("WScript.Shell")
WshShell.Run "devmgmt.msc"
WScript.Sleep 1000
While WshShell.AppActivate("Device Manager") = FALSE
    wscript.sleep 1000
Wend
WshShell.AppActivate "Device Manager"
WScript.Sleep 200
WshShell.Sendkeys "{TAB}"
WScript.Sleep 200
WshShell.SendKeys "%A"
WScript.Sleep 200
WshShell.SendKeys "A"
While WshShell.AppActivate("Scanning Plug and Play Compliant Hardware...") = TRUE
    wscript.sleep 5000
Wend
WshShell.AppActivate "Device Manager"

'Wscript.Sleep 500
WshShell.Sendkeys "{ENTER}"
Wscript.Sleep 500
WshShell.Sendkeys "%{F4}"
*** Script Ends

не дай бог нажать что-нибудь на клавиатуре или неудачно тыкнуть мышкой

Код:

devcon rescan
http://support.microsoft.com/default...N-US%3Bq311272
неужели WMI не сделали? :(

pva 18-02-2011 15:05 1616209

Что-то devcon я вообще не оценил. Выдаёт ответ в совершенно неудобоворимом формате. Пробовал найти свой модем в устройствах - гемор какой-то. Единственная полезная функция - это rescan.

В общем devcon - в мусорку.

Метод активации запуском менеджера устройств не прокатывает, ибо комбинация клавиш, которую надо нажать, чтобы вызвать обновление устройств, просто жуткая! как для фаталити в мортал-комбате. Предложенный буржуями вариант не прокатил на русскоязычной винде.

В общем оставленное на закуску - в мусорку.

Ищем дальше.

pva 19-02-2011 02:05 1616723

Написал удобную утилиту, использующую cfgmgr32.dll

Nerey 27-07-2011 17:48 1720991

Столкнулся с похожей проблемой
Очень хотелось бы увидеть реализацию

pva 27-07-2011 21:55 1721128

К сожалению, я не могу прикрепить исходник, т.к. сумма моих вложений превышает 1.99 Мб. и что-то там надо удалять, а мне лень. Я думал оно самоуничтожается при необходимости

Iska 27-07-2011 23:42 1721189

pva, всегда можно выложить на обменник, а ссылку выложить сюда или в ПМ просящему.

Nerey 03-08-2011 09:27 1725001

Так ли сложно выложить на какой-нибудь обменник, как посоветовал Iska?

pva 21-08-2011 13:51 1736349

Nerey, скажи почту, я вышлю. С обменниками надо заморачиваться

Nerey 22-08-2011 09:25 1736825

Почту указываем в профиле...


Время: 07:39.

Время: 07:39.
© OSzone.net 2001-