Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - показать устройства призраки

Ответить
Настройки темы
VBS/WSH/JS - показать устройства призраки
yuv yuv вне форума

Новый участник


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

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


Код: Выделить весь код
set devmgr_show_nonpresent_devices=1
start devmgmt.msc
Как этот BAT переделать в VBS?
Мне не нравится чёрное окно, мелькающее при запуске командного файла.

Отправлено: 00:16, 05-02-2014

 

Ветеран


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

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


Я когда-то делал так — 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. В отличном случае исправьте выделенное под текст Вашей ОС.

Отправлено: 02:01, 05-02-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


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

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


Цитата yuv:
Мне не нравится чёрное окно, мелькающее при запуске командного файла. »
Если проблема только в этом, то посмотрите тему из соседнего раздела.

Отправлено: 11:12, 05-02-2014 | #3

yuv yuv вне форума Автор темы

Новый участник


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

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


Iska
Ваш сценарий сам себя запускает повторно. Это не очень хорошо.
torauma
Не хочу использовать сторонние программы.

Отправлено: 00:47, 06-02-2014 | #4


Ветеран


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

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


Цитата yuv:
Iska
Ваш сценарий сам себя запускает повторно. Это не очень хорошо. »
Покажете мне способ, как можно в текущее окружение, скриптом же, добавить новые переменные окружения — перезапускать самого себя скрипту более не понадобится.

Отправлено: 01:19, 06-02-2014 | #5

yuv yuv вне форума Автор темы

Новый участник


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

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


Цитата:
Покажете мне способ, как можно в текущее окружение, скриптом же, добавить новые переменные окружения — перезапускать самого себя скрипту более не понадобится.
А как же тогда bat-ник выполняется? Он ведь сам себя повторно не запускает.

Отправлено: 16:15, 01-03-2014 | #6


Ветеран


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

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


Цитата 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
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:55, 01-03-2014 | #7

yuv yuv вне форума Автор темы

Новый участник


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

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


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

Отправлено: 18:01, 02-03-2014 | #8


Ветеран


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

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


yuv, не совсем . В Вашем варианте надо ещё «ручками» выбирать:
Цитата Iska:
Вид->Показать скрытые устройства »

Отправлено: 18:15, 02-03-2014 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - показать устройства призраки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Показать раздел ruv123 Microsoft Windows 2000/XP 9 21-12-2010 21:03
Любой язык - [решено] Показать MessageBox у клиента avolkov2009 Скриптовые языки администрирования Windows 10 16-05-2010 13:21
Как массово удалить все! устройства-"призраки" ~Cash~ Хочу все знать 9 16-01-2010 18:02
Proxy/NAT - Как показать, что я с Украины viter_alex Сетевые технологии 3 11-10-2008 02:30




 
Переход