1

Тема: AHK: Другое действие при нажатии кнопки закрытия программы

Есть проигрыватель PotPlayer, после клика по видео запуск в нём требует несколько секунд. Привык к мгновенному запуску VLC. Если PotPlayer плеер не закрывать, то запуск видео происходит быстрее, идея в том, чтобы при закрытии плеер просто скрывался - ждал запуска следующего файла, как такое можно реализовать?

пробовал использовать такой код

~RButton::
   CoordMode, Mouse, Screen
   MouseGetPos, m_x, m_y, m_hw_target

   ; WM_NCHITTEST
   SendMessage, 0x84,, ( m_y << 16 )|m_x,, ahk_id %m_hw_target%
   
   if ( m_hw_target = WinExist( "ahk_exe PotPlayerMini64.exe" ) )
   {
      if ( ErrorLevel = 2 )          ; HTCAPTION
         text = caption
      else if ( ErrorLevel = 3 )      ; HTSYSMENU
         text = system menu
      else if ( ErrorLevel = 8 )      ; HTMINBUTTON
         text = minimize button
      else if ( ErrorLevel = 9 )      ; HTMAXBUTTON
         text = maximize button
      else if ( ErrorLevel = 20 )      ; HTCLOSE
         text = close button
      else if ( ErrorLevel = 21 )      ; HTHELP
         text = help button
      
      if ErrorLevel in 2,3,8,9,20,21
         MsgBox, Hello, Notepad's %text%!
   }
return

Но ничего не происходит, возможно PotPlayer при нажатии кнопки закрытия не отправляет ErrorLevel? Или отправляет другой код? Как это можно проверить?

2

Re: AHK: Другое действие при нажатии кнопки закрытия программы

OmTatSat
Значение ErrorLevel, вероятно, теряется после выполнения WinExist. Попробуйте сохранять его в специальную переменную.

3

Re: AHK: Другое действие при нажатии кнопки закрытия программы

YMP как сохранить ErrorLevel в переменную пока не знаю, но пробовал убрать условие вообще, то-есть без строки

if ( m_hw_target = WinExist( "ahk_exe PotPlayerMini64.exe" ) )

ничего не поменялось

4

Re: AHK: Другое действие при нажатии кнопки закрытия программы

С другими программами работает? У меня да. Что возвращает ваш плеер — см. содержимое ErrorLevel через MsgBox.

5

Re: AHK: Другое действие при нажатии кнопки закрытия программы

Спасибо за подсказку с меседжбоксом.

с этим кодом

#IfWinActive ahk_exe PotPlayerMini64.exe
LButton::
CoordMode, Mouse, Screen
MouseGetPos, mX, mY, Hwnd
SendMessage, 0x84,, (mX & 0xFFFF)|(mY & 0xFFFF)«16,, ahk_exe PotPlayerMini64.exe
MsgBox, %errorlevel%
If ErrorLevel=14 ; close
ToolTip, work
else
Send {LButton Down}
KeyWait LButton		;physical state
Send {LButton Up}
Return

возвращает 0, 12, или 14 почему так может быть?

С кодом который писал раньше в ErrorLevel всегда одно значение куда бы не кликнул

6

Re: AHK: Другое действие при нажатии кнопки закрытия программы

OmTatSat пишет:

возвращает 0, 12, или 14 почему так может быть?

Потому что есть такие коды, видимо.


#define HTNOWHERE  0
#define HTTOP  12
#define HTTOPRIGHT  14

Если код кнопки закрытия не возвращается, то о причине можно только гадать. В принципе, приложение может и само обрабатывать эти сообщения и возвращать любое значение или вообще никакого, если его автор видит в этом какой-то смысл.