Orion9

|
Posted: Tue Sep 09, 2025 20:29 Post subject: |
|
|
Быстренько пробежался еще раз. Добавил комментариев и важную переменную bTransCopyWin, которой можно управлять прозрачностью окна копирования. По умолчанию выключена. Если нужно, чтобы во время копирования окно копирования тоже становилось прозрачным, включение через Local bTransCopyWin = true.
 Hidden text Code: | Func CopyMonitor()
Local bTransCopyWin = false # прозрачность окна копирования
Static hCopyWnd = 0
# Если монитор уже запущен - остановить
If g_CopyMonitor Then
g_CopyMonitor = false
Return
EndIf
# поиск окна копирования
hCopyWnd = WinFind(0, "TDLG2FILEACTIONMIN")
If hCopyWnd = 0 Then
ShowHint("Копирование не запущено", 0, 0, 1000, 1)
WinAlign(LAST_HINT_WINDOW)
Return
EndIf
# текущее состояние монитора
g_CopyMonitor = true
# установка прозрачности окна ТС
WinSetStyle(0x80000, 3)
DllCall("SetLayeredWindowAttributes", "hwnd", AUTORUN_TCHANDLE, _
"ptr", 0, "byte", 192, "dword", 2)
# опциональная прозрачность окна копирования
If bTransCopyWin Then
WinSetStyle(0x80000, 3, hCopyWnd)
DllCall("SetLayeredWindowAttributes", "hwnd", hCopyWnd, _
"ptr", 0, "byte", 192, "dword", 2)
EndIf
# поиск и блокировка кнопки "В фоне"
Local b = WinFind(hCopyWnd, _
(AUTORUN_TCARCH = 32 ? "TButton" : "Button"), (AUTORUN_TCARCH = 32 ? 2 : 1))
WinSetState(21, b)
# параметры подсказки
SetHintParam("ShowHint", "Font", 15, "Arial")
SetHintParam("ShowHint", "BackColor", 0xFF0000)
SetHintParam("ShowHint", "Text", 0xFFFFFF)
ShowHint("Монитор выключения запущен, ожидание завершения копирования", 0, 0, 1000, 1)
# сброс параметров подсказки
SetHintParam("ShowHint", "Reload")
# центрирование подсказки
WinAlign(LAST_HINT_WINDOW)
# цикл ожидания периодический поиск окна копирования
While hCopyWnd <> 0
For i = 1 To 10
If Not g_CopyMonitor Then Break
Sleep(100)
Next
If Not g_CopyMonitor Then Break
hCopyWnd = WinFind(0, "TDLG2FILEACTIONMIN")
Wend
# разблокирование кнопки "В фоне"
WinSetState(20, b)
# цикл не был прерван повторным нажатием Ctrl+Alt+O
If g_CopyMonitor Then
g_CopyMonitor = false
WinShutdown()
Else
SetHintParam("ShowHint", "Font", 15, "Arial")
SetHintParam("ShowHint", "BackColor", 0xFF0000)
SetHintParam("ShowHint", "Text", 0xFFFFFF)
ShowHint("Монитор выключения остановлен", 0, 0, 1000, 1)
SetHintParam("ShowHint", "Reload")
WinAlign(LAST_HINT_WINDOW)
EndIf
# отключение прозрачности
WinSetStyle(0x80000, 5)
If bTransCopyWin Then WinSetStyle(0x80000, 5, hCopyWnd)
EndFunc |
Добавлено спустя 2 минуты:
Loopback
А что делать-то?  |
|