Orion9

|
Posted: Mon Sep 08, 2025 20:11 Post subject: |
|
|
Loopback wrote: | Увы, идеально точно не получится |
Да ладно. Говорю же, это мелочи. Всё-равно мне показалось, что лучше стало.
Loopback wrote: | Да, как и было задумано |
Попробуем, когда доберуться руки.
В общем, поюзал я ТС с прозрачным окном в Win11... есть в этом что-то, но есть и недостаток. При посылке сообщения главному окну, оно скрывается и значок ТС на панели задач пропадает, затем снова появляется как ни в чем не бывало. Всё это напоминает, как ведет себя ТСх64 в аналогичной ситуации (без прозрачности), но там хотя бы окно не пропадает, а только значок, что не критично. Но здесь же... В общем, юзать такое сложно, если вообще возможно.
Сначала думал, что проблема в SendCommand или в WinRedraw(1), но дело не в этом. Ниже код для воспроизведения проблемы. Окно и значок на панели задач пропадают на секунду при условии, что установлена прозрачность:
Code: | RegisterCommand 60030 TestTransparencyBug
Func TestTransparencyBug(lParam)
SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
Sleep(1000)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
EndFunc |
Loopback, можно что-то с этим сделать, есть мысли?
A55555, когда писал тот большой пост, не было времени сразу все проверить. Так и знал, что что-нибудь да упущу. В общем, для полноценной работы функций подсчета потребуется еще одна вспомогательная функция:
 Hidden text Code: | Func ListDirectory(sPath, ByRef aList, nDepth = 1)
Local sFile, nAttr
Local ffd = Buffer(604)
Local hf = DllCall("FindFirstFileW", "wstr", sPath & "\*.*", "ptr", ffd.Ptr)
If hf <> 0 then
While True
sFile = ffd.GetStr(44) # cFileName
nAttr = ffd.GetNum(0, "dword") # dwFileAttributes
If BitAND(nAttr, 16) Then
If Not ((sFile = ".") Or (sFile = "..")) Then
aList.Add(sPath & "\" & sFile)
If nDepth <> 1 Then
ListDirectory(sPath & "\" & sFile, aList, nDepth - 1)
EndIf
EndIf
Else
aList.Add(sPath & "\" & sFile)
Endif
If DllCall("FindNextFileW", "handle", hf, "ptr", ffd.Ptr) = 0 Then Break
Wend
DllCall("FindClose", "handle", hf)
Endif
Free(ffd)
EndFunc |
Просто скопируйте ее в любое место файла конфигурации. Сейчас Autorun такие функции не нужны, у него есть свои более удобные функции для поиска и выборки файлов. Но это делалось давно, поэтому и забыл, т.к. она лежала у меня в совсем другом модуле. |
|