Как видно из заголовка, я хочу, чтобы проигрыватель Windows Media приостанавливался при блокировке компьютера и снова воспроизводился, когда я его разблокировал.

Это возможно?

Я попытался сделать это с помощью этого скрипта AutoHotKey:

;---------------------------------------------------------------
;Notify Lock\Unlock
;   This script monitors LockWorkstation calls
;
;   If a change is detected it 'notifies' the calling script
;      On Lock
;         This script will call function "on_lock()"
;      On Unlock
;         This script will call fucntion "on_unlock()"
;IMPORTANT: The functions "on_lock()" and "on_unlock()" DO NOT
;exist in this script, they are to be created in the script that
;calls notify_lock_unlock() (presumably your main script)
;---------------------------------------------------------------
;Re-purposed by WTO605
;Last edited 2009-08-18 16:34 UTC
;---------------------------------------------------------------
;Based on Winamp_Lock_Pause by MrInferno
;Posted: Fri Apr 21, 2006 4:49 am
;Source: http://www.autohotkey.com/forum/topic9384.html
;---------------------------------------------------------------
;Winamp_Lock_Pause was/is based on script codes from "shimanov"
;Posted: Thu Sep 15, 2005 12:26 am   
;Source: http://www.autohotkey.com/forum/viewtopic.php?t=5359
;Posted: Tue Dec 06, 2005 9:14 pm
;Source: http://www.autohotkey.com/forum/viewtopic.php?t=6755
;---------------------------------------------------------------

;Initialize global constants
WTS_SESSION_LOCK      :=   0x7
WTS_SESSION_UNLOCK      :=   0x8
NOTIFY_FOR_ALL_SESSIONS   :=   1
NOTIFY_FOR_THIS_SESSION   :=   0
WM_WTSSESSION_CHANGE   :=   0x02B1

notify_lock_unlock()
{
   Global WM_WTSSESSION_CHANGE
   Global NOTIFY_FOR_ALL_SESSION

   hw_ahk := FindWindowEx( 0, 0, "AutoHotkey", a_ScriptFullPath " - AutoHotkey v" a_AhkVersion )

   OnMessage( WM_WTSSESSION_CHANGE, "Handle_WTSSESSION_CHANGE" )

   success := DllCall( "wtsapi32.dll\WTSRegisterSessionNotification", "uint", hw_ahk, "uint", NOTIFY_FOR_ALL_SESSIONS )

   if( ErrorLevel OR ! success )
   {
      success := DllCall( "wtsapi32.dll\WTSUnRegisterSessionNotification", "uint", hw_ahk )
      ;If DLL registration fails, wait 20 seconds and try again
      Sleep, 20000
      notify_lock_unlock()
      ;MsgBox, [WTSRegisterSessionNotification] failed: EL = %ErrorLevel%
   }
   return
}

Handle_WTSSESSION_CHANGE( p_w, p_l, p_m, p_hw )
; p_w  = wParam   ;Session state change event
; p_l  = lParam   ;Session ID
; p_m  = Msg   ;WM_WTSSESSION_CHANGE
; p_hw = hWnd   ;Handle to Window
{
   Global WTS_SESSION_LOCK
   Global WTS_SESSION_UNLOCK

   If ( p_w = WTS_SESSION_LOCK )
   {
      on_lock()
   }
   Else If ( p_w = WTS_SESSION_UNLOCK )
   {
      on_unlock()
   }
}

FindWindowEx( p_hw_parent, p_hw_child, p_class, p_title )
{
   return, DllCall( "FindWindowEx", "uint", p_hw_parent, "uint", p_hw_child, "str", p_class, "str", p_title )
}

notify_lock_unlock()
; Calls function "on_lock()" when computer is locked and "on_unlock()" when computer is unlocked

on_lock()
{
   Send, {Media_Play_Pause}
}

on_unlock()
{
   Send, {Media_Play_Pause}
}

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

Я не могу найти какие-либо параметры командной строки для проигрывателя Windows Media для приостановки / воспроизведения.

Кто-нибудь знает, как заставить этот скрипт работать правильно? Или, если у вас есть идея, как это сделать, скажите, пожалуйста.

1 ответ1

1

Попробуйте эту маленькую программу.

Для Chris F - это программа, которая выключает ваш монитор, приостанавливает ваш медиаплеер и помещает ваши программы обмена мгновенными сообщениями в AFK, когда вы блокируете свой компьютер.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .