<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: отслеживание перехода в спящий режим]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=4406</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=4406&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: отслеживание перехода в спящий режим».]]></description>
		<lastBuildDate>Sun, 25 Apr 2010 07:10:30 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: отслеживание перехода в спящий режим]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=35034#p35034</link>
			<description><![CDATA[<p><em>Без гарантий. Используете на свой страх и риск.</em><br />Скрипт предназначен для обновления подключения сетевого соединения после выхода компьютера из спящего режима. Автор: <strong>alexii</strong>.<br />Lang: VBScript</p><div class="codebox"><pre><code>Option Explicit

Const PowerManagementEventType_ResumeFromSuspend = 7

Dim objSWbemServicesEx
Dim objSWbemEventSource_Win32_PowerManagementEvent
Dim objSWbemObjectEx_Win32_PowerManagementEvent

Dim strNetworkConnectionsName


strNetworkConnectionsName = &quot;Подключение по локальной сети&quot;

Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&quot;)
Set objSWbemEventSource_Win32_PowerManagementEvent = _
    objSWbemServicesEx.ExecNotificationQuery(&quot;SELECT * FROM Win32_PowerManagementEvent&quot;)

Do
    Set objSWbemObjectEx_Win32_PowerManagementEvent = objSWbemEventSource_Win32_PowerManagementEvent.NextEvent
    
    If objSWbemObjectEx_Win32_PowerManagementEvent.EventType = PowerManagementEventType_ResumeFromSuspend Then
        If ReconnectNetworkConnection(strNetworkConnectionsName) Then
            WScript.Echo &quot;Соединение [&quot; &amp; strNetworkConnectionsName &amp; &quot;] переподключено успешно.&quot;
        Else
            WScript.Echo &quot;Не удалось переподключить соединение [&quot; &amp; strNetworkConnectionsName &amp; &quot;].&quot;
        End If
    End If
Loop

Set objSWbemObjectEx_Win32_PowerManagementEvent    = Nothing
Set objSWbemEventSource_Win32_PowerManagementEvent = Nothing
Set objSWbemServicesEx                             = Nothing

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

&#039;=============================================================================
&#039; Функция: ReconnectNetworkConnection
&#039; 
&#039; Аргументы
&#039;    strNetworkConnectionsName: Имя сетевого соединения, например &quot;Подключение по локальной сети&quot;
&#039;=============================================================================
Function ReconnectNetworkConnection(strNetworkConnectionsName)
    Const NetworkConnections = &amp;H31
    
    
    Dim strVerbName_Enable
    Dim strVerbName_Disable
    
    Dim objShell
    Dim objFolder_NetworkConnections
    Dim objFolderItem
    Dim objFolderItem_NetworkConnections
    
    Dim objVerb
    
    
    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(NetworkConnections)
    
    If objFolder_NetworkConnections Is Nothing Then
        WScript.Echo &quot;Virtual Folder [Network Connections] not found.&quot;
        
        ReconnectNetworkConnection = False
        
        Set objShell                         = Nothing
        
        Exit Function
    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;
        
        ReconnectNetworkConnection = False
        
        Set objFolder_NetworkConnections     = Nothing
        Set objShell                         = Nothing
        
        Exit Function
    End If
    
    &#039; Если есть соединение - отключаем его
    For Each objVerb In objFolderItem_NetworkConnections.Verbs
        If objVerb.Name = strVerbName_Disable Then
            objVerb.DoIt
            
            Exit For
        End If
    Next
    
    &#039; Ждём, пока не будет возможности подключения соединения, и подключаем его
    Do
        For Each objVerb In objFolderItem_NetworkConnections.Verbs
            If objVerb.Name = strVerbName_Enable Then
                objVerb.DoIt
                
                Exit Do
            End If
        Next
        
        WScript.Sleep 100
    Loop
    
    &#039; Ждём, пока не будет возможности отключения соединения, и выходим
    Do
        For Each objVerb In objFolderItem_NetworkConnections.Verbs
            If objVerb.Name = strVerbName_Disable Then
                Exit Do
            End If
        Next
        
        WScript.Sleep 100
    Loop
    
    ReconnectNetworkConnection = True
    
    Set objFolderItem_NetworkConnections = Nothing
    Set objFolder_NetworkConnections     = Nothing
    Set objShell                         = Nothing
End Function
&#039;=============================================================================</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Poltergeyst)]]></author>
			<pubDate>Sun, 25 Apr 2010 07:10:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=35034#p35034</guid>
		</item>
		<item>
			<title><![CDATA[VBScript: отслеживание перехода в спящий режим]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=35033#p35033</link>
			<description><![CDATA[<p><em>Без гарантий. Используете на свой страх и риск.</em><br />Скрипт предназначен для отслеживания перехода компьютера в спящий/ждущий режим, а также события пробуждения из этих режимов.<br />После запуска скрипта переведите компьютер в спящий/ждущий режим, а через некоторое время пробудите компьютер, например движением мыши и просмотрите полученное сообщение протокола.<br />Lang: VBScript<br />ОС WinMe</p><div class="codebox"><pre><code>&#039;--------- Без гарантий! Используете на свой страх и риск.----------
&#039;-------------------------------------------------------------------
&#039;Скрипт предназначен для обработки события управления питанием клиентского 
&#039;компьютера и отслеживает событие перехода в спящий/ждущий режим, а также 
&#039;событие пробуждения компьютера из этих режимов.
&#039;-------------------------------------------------------------------
&#039;После запуска скрипта переведите компьютер в спящий/ждущий режим, а через 
&#039;некоторое время пробудите компьютер, например движением мыши и просмотрите 
&#039;полученное сообщение протокола.
&#039;-------------------------------------------------------------------
&#039;Lang: VBScript
&#039;ОС WinMe
&#039;-------------------------------------------------------------------
 EventStr=&quot;[Информация]&quot;
 HoldScript = True

&#039;[Создание запроса WMI на обработку события]
&#039;-------------------------------------------------------------------
 Set objService = GetObject(&quot;winmgmts:\\.\Root\CIMV2&quot;)
 Set objSink = WScript.CreateObject(&quot;WbemScripting.SWbemSink&quot;, &quot;Sink_&quot;)

 objService.ExecNotificationQueryAsync _
 objSink, _
 &quot;SELECT * FROM Win32_PowerManagementEvent WITHIN 1&quot;
&#039;-------------------------------------------------------------------
 MsgBox &quot;Отслеживание включено.&quot;, vbSystemModal Or vbInformation, &quot;Power Management&quot;

 Do
 WScript.Sleep 100
 If Not HoldScript Then Exit Do
 Loop

 objSink.Cancel()
 WScript.Sleep(500)
 Set objService = Nothing
 Set objSink = Nothing
 MsgBox &quot;Работа завершена.&quot;, vbSystemModal Or vbInformation, &quot;Power Management&quot;
 WScript.Quit()

&#039;[Обработка события управления энергопитанием]
&#039;-------------------------------------------------------------------
Sub Sink_OnObjectReady(objEvent, objContext)
    
    e = CInt(objEvent.EventType)
    t = Time &#039;С точностью до 1 сек
    &#039;-----------------------------------------------------------
    Select Case e

    Case 4    &#039;Код перехода в ждущий/спящий режим
        EventStr = EventStr &amp; vbCRLF &amp; vbCRLF &amp; &quot;Переход в спящий/ждущий режим &quot; &amp; &quot;_&quot; &amp; t

    Case 7    &#039;Код возврата из ждущего/спящего режима
        EventStr = EventStr &amp; vbCRLF &amp; &quot;Возврат из спящего/ждущего режима &quot; &amp; &quot;_&quot; &amp; t

        If MsgBox(EventStr &amp; vbCRLF &amp; vbCRLF &amp; &quot;Остановить отслеживание?&quot;, _
            vbSystemModal Or vbInformation Or vbYesNo, _
            &quot;Протокол события&quot;) = vbYes Then HoldScript = False

    End Select
    &#039;-----------------------------------------------------------    

End Sub
&#039;-------------------------------------------------------------------</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Poltergeyst)]]></author>
			<pubDate>Sun, 25 Apr 2010 07:05:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=35033#p35033</guid>
		</item>
	</channel>
</rss>
