<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: перечисление сетевых подключений]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=743&amp;type=atom" />
	<updated>2009-07-27T17:02:13Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=743</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: перечисление сетевых подключений]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=26492#p26492" />
			<content type="html"><![CDATA[<p>Скрипт переключает состояние указанного сетевого подключения компьютера (если включено - отключает, и наоборот). Без использования WMI.</p><p>Отличия от скрипта, представленного в предыдущем посте:<br />* упрощена схема получения объекта Folder «Сетевые подключения»: объект получается напрямую, указанием соответствующего CSIDL_xxx (и, возможно, вследствие этого не будет работать ниже W2K);<br />* упрощена логика работы; соответственно, выкинуты лишние объекты objEnable, objDisable и переменная bEnabled;<br />* вместо простого ожидания «WScript.Sleep 1000», времени которого может оказаться недостаточно (см. <a href="http://forum.script-coding.com/viewtopic.php?id=982">VBScript: запуск файлов ассоциированным приложением</a>), ждём действительной отработки глагола (процедура «WaitForVerb») и выходим из ожидания только по свершившемуся факту.<br />* результат переключения возвращаем как ERRORLEVEL: 0 — успешное переключение, всё, что больше — неудача.<br /></p><div class="codebox"><pre><code>Option Explicit

Const CSIDL_NetworkConnections = &amp;H31


Dim strNetworkConnectionsName
Dim strVerbName_Enable
Dim strVerbName_Disable

Dim objShell
Dim objFolder_NetworkConnections
Dim objFolderItem
Dim objFolderItem_NetworkConnections

Dim objVerb


strNetworkConnectionsName = &quot;Подключение по локальной сети&quot; &#039; Имя сетевого соединения
strVerbName_Enable        = &quot;&amp;Включить&quot;                     &#039; En&amp;able для англ. версии ОС
strVerbName_Disable       = &quot;&amp;Отключить&quot;                    &#039; Disa&amp;ble для англ. версии ОС

Set objShell = WScript.CreateObject(&quot;Shell.Application&quot;)
Set objFolder_NetworkConnections = objShell.Namespace(CSIDL_NetworkConnections)

If objFolder_NetworkConnections Is Nothing Then
    WScript.Echo &quot;Virtual Folder [Network Connections] not found.&quot;
    
    WScript.Quit 1
End If

For Each objFolderItem In objFolder_NetworkConnections.Items
    If UCase(objFolderItem.Name) = UCase(strNetworkConnectionsName) Then
        Set objFolderItem_NetworkConnections = objFolderItem
        
        Exit For
    End If
Next

If objFolderItem_NetworkConnections Is Nothing Then
    WScript.Echo &quot;Connection [&quot; &amp; strNetworkConnectionsName &amp; &quot;] not found.&quot;
    
    WScript.Quit 2
End If

For Each objVerb In objFolderItem_NetworkConnections.Verbs
    If objVerb.Name = strVerbName_Enable Then
        objVerb.DoIt
        WaitForVerb objFolderItem_NetworkConnections, strVerbName_Disable
        
        Exit For
    End If
    
    If objVerb.Name = strVerbName_Disable Then
        objVerb.DoIt
        WaitForVerb objFolderItem_NetworkConnections, strVerbName_Enable
        
        Exit For
    End If
Next

Set objFolderItem_NetworkConnections = Nothing
Set objFolder_NetworkConnections     = Nothing
Set objShell                         = Nothing

WScript.Quit 0
&#039;=============================================================================

&#039;=============================================================================
Sub WaitForVerb(objFolderItem, strVerb)
    Dim objVerb
    
    Do
        For Each objVerb In objFolderItem.Verbs
            If objVerb.Name = strVerb Then
                Exit Do
            End If
        Next
        
        WScript.Sleep 100
    Loop
End Sub
&#039;=============================================================================</code></pre></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-07-27T17:02:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=26492#p26492</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: перечисление сетевых подключений]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=5536#p5536" />
			<content type="html"><![CDATA[<p>Скрипт переключает состояние указанного сетевого подключения компьютера (если включено - отключает, и наоборот). Без использования WMI.<br />Идею опубликовал <strong>dmitry_a</strong>.<br /></p><div class="codebox"><pre><code>strNetConn = &quot;Сетевые подключения&quot; &#039; Network Connections для англ. версии ОС
strConn = &quot;Подключение по локальной сети&quot; &#039; имя или часть имени подключения
strEnable = &quot;&amp;Включить&quot; &#039; En&amp;able для англ. версии ОС
strDisable = &quot;&amp;Отключить&quot; &#039; Disa&amp;ble для англ. версии ОС

Set objShell = CreateObject(&quot;Shell.Application&quot;)
Set objCP = objShell.Namespace(3) &#039; Панель управления
For Each elem in objCP.Items
    If elem.Name = strNetConn Then
        &#039; получение папки &quot;Сетевые подключения&quot;
        Set colNetwork = elem.GetFolder
        Exit For
    End If
Next

Set Conn = Nothing
For Each clsConn in colNetwork.Items
    If Instr(LCase(clsConn.name), LCase(strConn)) Then
        &#039; получение указанного подключения
        Set Conn = clsConn
        Exit For
    End If
Next
If Conn Is Nothing Then
    WScript.Echo &quot;Network Connection not found&quot;
    WScript.Quit
End If

bEnabled = True
Set objEnable = Nothing
Set objDisable = Nothing
For Each clsVerb in Conn.verbs
    &#039; если доступен глагол &quot;Enable&quot;, подключение отключено
    If clsVerb.Name = strEnable Then
        Set objEnable = clsVerb
        bEnabled = False
    End If
    &#039; если доступен глагол &quot;Disable&quot;, подключение подключено
    If clsVerb.name = strDisable Then
        Set objDisable = clsVerb
    End If
Next

If bEnabled Then
    objDisable.DoIt
    strStatus = &quot;disabled.&quot;
Else
    objEnable.DoIt
    strStatus = &quot;enabled.&quot;
End If
WScript.Sleep 1000

WScript.Echo Conn.Name &amp; &quot; &quot; &amp; strStatus</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-10-16T17:06:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=5536#p5536</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: перечисление сетевых подключений]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=5257#p5257" />
			<content type="html"><![CDATA[<p>WMI-скрипт перечисляет сетевые подключения компьютера, определяет их статус (подключено, отключено и т.п.).<br /></p><div class="codebox"><pre><code>strComputer = &quot;.&quot;
Set objWMIService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot; &amp; strComputer &amp; &quot;\root\cimv2&quot;)
Set colShares = objWMIService.ExecQuery(&quot;SELECT * FROM Win32_NetworkAdapter&quot;)
Set NetConnStat = CreateObject(&quot;Scripting.Dictionary&quot;)
NetConnStat.Add 0, &quot;Disconnected&quot;
NetConnStat.Add 1, &quot;Connecting&quot;
NetConnStat.Add 2, &quot;Connected&quot;
NetConnStat.Add 3, &quot;Disconnecting&quot;
NetConnStat.Add 4, &quot;Hardware not present&quot;
NetConnStat.Add 5, &quot;Hardware disabled&quot;
NetConnStat.Add 6, &quot;Hardware malfunction&quot;
NetConnStat.Add 7, &quot;Media disconnected&quot;
NetConnStat.Add 8, &quot;Authenticating&quot;
NetConnStat.Add 9, &quot;Authentication succeeded&quot;
NetConnStat.Add 10, &quot;Authentication failed&quot;
NetConnStat.Add 11, &quot;Invalid address&quot;
NetConnStat.Add 12, &quot;Credentials required&quot;
NetConnStat.Add Null, &quot;Null&quot;
For Each objShare In colShares
    Wscript.Echo NetConnStat.Item(objshare.NetConnectionStatus)
    Wscript.Echo objshare.AdapterType
    Wscript.Echo objshare.PNPDeviceID
    Wscript.Echo objshare.Description
    Wscript.Echo objshare.NetConnectionID
    Wscript.Echo
Next</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-10-02T18:14:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=5257#p5257</id>
		</entry>
</feed>
