показать устройства призраки
Код:
set devmgr_show_nonpresent_devices=1
start devmgmt.msc
Как этот BAT переделать в VBS?
Мне не нравится чёрное окно, мелькающее при запуске командного файла.
|
Я когда-то делал так — Show Detail & Hidden Devices.vbs:
читать дальше »
Код:
Option Explicit
Const SW_HIDE = 0
Dim elem
Dim strNewEnvironment
Dim objSWbemObjectEx
Dim lngProcessID
Dim objMenuItem
Dim strTempFileName
If Not WScript.Arguments.Named.Exists("ShowDevMgmt") Then
With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
strNewEnvironment = _
"DEVMGR_SHOW_NONPRESENT_DEVICES=1" & vbCrLf & _
"DEVMGR_SHOW_DETAILS=1"
For Each elem In WScript.CreateObject("WScript.Shell").Environment("Process")
If Left(elem, 1) <> "=" Then
strNewEnvironment = strNewEnvironment & vbCrLf & elem
End If
Next
Set objSWbemObjectEx = .Get("Win32_ProcessStartup").SpawnInstance_
objSWbemObjectEx.ShowWindow = SW_HIDE
objSWbemObjectEx.EnvironmentVariables = Split(strNewEnvironment, vbCrLf)
If .Get("Win32_Process").Create( _
"wscript.exe """ & WScript.ScriptFullName & """ /ShowDevMgmt", Null, objSWbemObjectEx, lngProcessID _
) <> 0 Then
WScript.Echo "Process [wscript.exe """ & WScript.ScriptFullName & """] could not be created."
End If
Set objSWbemObjectEx = Nothing
End With
Else
With WScript.CreateObject("MMC20.Application")
.Load "devmgmt.msc"
With .Document
With .ActiveView
.Frame.Maximize
For Each objMenuItem In .ScopeNodeContextMenu
If objMenuItem.Path = "Вид->Показать скрытые устройства" Then
If objMenuItem.Enabled = 1 Then
objMenuItem.Execute
Exit For
End If
End If
Next
End With
If .IsSaved = 0 Then
strTempFileName = GetTemporaryFileName()
.SaveAs strTempFileName
WScript.CreateObject("Scripting.FileSystemObject").DeleteFile strTempFileName, True
End If
End With
.UserControl = 1
End With
End If
WScript.Quit 0
'=============================================================================
'=============================================================================
Function GetTemporaryFileName()
Const TEMP_FOLDER = 2
Dim strTempFile
With WScript.CreateObject("Scripting.FileSystemObject")
Do
strTempFile = .BuildPath(.GetSpecialFolder(TEMP_FOLDER), .GetTempName)
Loop While .FileExists(strTempFile)
End With
GetTemporaryFileName = strTempFile
End Function
'=============================================================================
Рассчитано было на локализованную версию Windows XP. В отличном случае исправьте выделенное под текст Вашей ОС.
|
Цитата:
Цитата yuv
Мне не нравится чёрное окно, мелькающее при запуске командного файла. »
|
Если проблема только в этом, то посмотрите тему из соседнего раздела.
|
Iska
Ваш сценарий сам себя запускает повторно. Это не очень хорошо.
torauma
Не хочу использовать сторонние программы.
|
Цитата:
Цитата yuv
Iska
Ваш сценарий сам себя запускает повторно. Это не очень хорошо. »
|
Покажете мне способ, как можно в текущее окружение, скриптом же, добавить новые переменные окружения — перезапускать самого себя скрипту более не понадобится.
|
Цитата:
Покажете мне способ, как можно в текущее окружение, скриптом же, добавить новые переменные окружения — перезапускать самого себя скрипту более не понадобится.
|
А как же тогда bat-ник выполняется? Он ведь сам себя повторно не запускает.
|
Цитата:
Цитата yuv
А как же тогда bat-ник выполняется? »
|
Вот Вы настырный, дружище ;). Чёрта с два б я когда-нибудь к этому вернулся.
Пробуйте:
читать дальше »
Код:
Option Explicit
Dim objMenuItem
Dim strTempFileName
With WScript.CreateObject("WScript.Shell").Environment("Process")
.Item("DEVMGR_SHOW_NONPRESENT_DEVICES") = "1"
.Item("DEVMGR_SHOW_DETAILS") = "1"
End With
With WScript.CreateObject("MMC20.Application")
.Load "devmgmt.msc"
With .Document
With .ActiveView
.Frame.Maximize
For Each objMenuItem In .ScopeNodeContextMenu
If objMenuItem.Path = "Вид->Показать скрытые устройства" Then
If objMenuItem.Enabled = 1 Then
objMenuItem.Execute
Exit For
End If
End If
Next
End With
If .IsSaved = 0 Then
strTempFileName = GetTemporaryFileName()
.SaveAs strTempFileName
WScript.CreateObject("Scripting.FileSystemObject").DeleteFile strTempFileName, True
End If
End With
.UserControl = 1
End With
WScript.Quit 0
'=============================================================================
'=============================================================================
Function GetTemporaryFileName()
Const TEMP_FOLDER = 2
Dim strTempFile
With WScript.CreateObject("Scripting.FileSystemObject")
Do
strTempFile = .BuildPath(.GetSpecialFolder(TEMP_FOLDER), .GetTempName)
Loop While .FileExists(strTempFile)
End With
GetTemporaryFileName = strTempFile
End Function
'=============================================================================
|
Iska
Наверное можно сделать проще. Вот мой аналог пакетного файла:
Код:
Dim Act
Set Act = WScript.CreateObject("WScript.Shell")
Dim Env
Set Env = Act.Environment("Process")
Env.Item("devmgr_show_nonpresent_devices") = 1
Set Env = Nothing
Act.Run "devmgmt.msc"
Set Act = Nothing
|
yuv, не совсем ;). В Вашем варианте надо ещё «ручками» выбирать:
Цитата:
Цитата Iska
Вид->Показать скрытые устройства »
|
|
Время: 07:16.
© OSzone.net 2001-