A55555
|
Posted: Sat Sep 13, 2025 23:33 Post subject: |
|
|
Orion9 wrote: | Не вижу у себя этой проблемы. Состояние окна счётчика "Поверх всех окон" устанавливается командой WinSetState(30, h_WinShutdown) после его создания. По идее не должно быть важно, где в этот момент находится пользователь, окно все-равно должно показываться поверх остальных. Кстати, я об этом упоминал, но вызвать только окно с отсчетом можно отдельной командой 80800:
Code: | TOTALCMD#BAR#DATA
808000
%COMMANDER_EXE%
808000
-1
|
Работает у вас так? Висит окно поверх всех?
|
При нажатии этой кнопки у меня закрывается окно счетчика (как будто я нажал на крестик этого окна) и соответственно далее выскакивает сообщение "Выключение ПК отменено".
Я понял в чем проблема, не выходит на передний план окно счетчика, потому что у меня автостарт по F11 стоит для полноэкранного режима TC
 Hidden text Code: | LoadLibrary Plugins\TCFS2Tools.dll
LoadLibrary Plugins\Autorun_Tweaks.dll
LoadLibrary Plugins\Autorun_Runtime.dll
LoadLibrary Plugins\Autorun_Sysinfo.dll
SetHotKeyAction /H:F11 ToggleFullScreen
WinGetPos('cX', 'cY', 'cW', 'cH')
If Not FileExist(AUTORUN_PATH & '\Layout.ini') Then
ShellExec /SW_HIDE /WAIT %ComSpec% '/q/c echo [Layout]>%AUTORUN_PATH%\Layout.ini'
Local sLayout = IniReadSection('~/R', COMMANDER_INI, 'Layout')
If StrPos(sLayout, '=') Then _
IniWriteSection(AUTORUN_PATH & '\Layout.ini', 'Layout', sLayout)
Else
Local sLayout = IniReadSection(AUTORUN_PATH & '\Layout.ini', 'Layout')
If StrPos(sLayout, '=') Then _
IniWriteSection('~/R', COMMANDER_INI, 'Layout', sLayout)
EndIf
### переход в полноэкранный режим при старте. НАЧАЛО
ToggleFullScreen()
Func ToggleFullScreen(WinChange=1)
Static HasTabHeader, HasStatusBar, HasDriveList, HasKeyButtons, HasCmdLine, _
HasDriveBar, HasButtonBar, HasButtonBar2, HasMainHeader
### переход в полноэкранный режим при старте КОНЕЦ (закомментировав не будет сразу в полноєкранном режиме)
IniRead /R HasCurDir %COMMANDER_INI% 'Layout' 'CurDir'
If HasCurDir Then SendMessage(AUTORUN_TCHANDLE, 11, 0)
If WinChange Then
# SPI_GETWORKAREA - desktop area without taskbar
Static wAreaX1 = SystemParametersInfo(48, 1), _
wAreaY1 = SystemParametersInfo(48, 2), _
wAreaX2 = SystemParametersInfo(48, 3), _
wAreaY2 = SystemParametersInfo(48, 4)
If HasCurDir Then
Static wX = wAreaX1 ? wAreaX1 + 1 : 0, _
wY = wAreaY1 ? wAreaY1 + 1 : 0, _
wW = wAreaX2 = SYSINFO_DESKTOPWIDTH ? wAreaX2 - wAreaX1 - 1 : wAreaX2 - wAreaX1, _
wH = wAreaY2 = SYSINFO_DESKTOPHEIGHT ? wAreaY2 - wAreaY1 - 1 : wAreaY2 - wAreaY1
If WinGetState(6) Then WinSetState(9)
WinSetPos(wX, wY, wW, wH)
Else
If WinGetState(6) Then WinSetState(9)
If cX <> '' Then WinSetPos(cX, cY, cW, cH)
EndIf
EndIf
If HasCurDir Then
HasMainHeader = WinHasStyle(12582912)
PostMessage(AUTORUN_TCHANDLE, 1075, 65538)
IniRead /R HasTabHeader %COMMANDER_INI% 'Layout' 'TabHeader' 1
IniRead /R HasStatusBar %COMMANDER_INI% 'Layout' 'StatusBar' 1
IniRead /R HasDriveList %COMMANDER_INI% 'Layout' 'DriveCombo' 1
IniRead /R HasKeyButtons %COMMANDER_INI% 'Layout' 'KeyButtons' 1
IniRead /R HasCmdLine %COMMANDER_INI% 'Layout' 'CmdLine' 1
IniRead /R HasDriveBar %COMMANDER_INI% 'Layout' 'DriveBar1' 0
IniRead /R HasButtonBar %COMMANDER_INI% 'Layout' 'ButtonBar' 1
IniRead /R HasButtonBar2 %COMMANDER_INI% 'Layout' 'ButtonBarVertical' 1
#SendCommand 2902 2
SendCommand 2906 2
SendCommand 2907 2
SendCommand 2908 2
SendCommand 2909 2
SendCommand 2910 2
SendCommand 2911 2
SendCommand 2944 2
SendCommand 2901 2
WinSetStyle 12582912 4
Else
PostMessage(AUTORUN_TCHANDLE, 1075, 65537)
If HasButtonBar Then SendCommand 2901 1
#If HasDriveBar Then SendCommand 2902 1
If HasDriveList Then SendCommand 2906 1
SendCommand 2907 1
If HasTabHeader Then SendCommand 2908 1
If HasStatusBar Then SendCommand 2909 1
If HasCmdLine Then SendCommand 2910 1
If HasKeyButtons Then SendCommand 2911 1
If HasButtonBar2 Then SendCommand 2944 1
If HasMainHeader Then WinSetStyle 12582912 2
EndIf
SendCommand 2918
If HasCurDir Then SendMessage(AUTORUN_TCHANDLE, 11, 1)
WinRedRaw 2
EndFunc |
не получается у окна счетчика поверх вот этого полноэкранного режима выйти.
Поверх нормального окна TC всё нормально, выходит на передний план окно счетчика.
Orion9
всё стесняюсь спросить. Мониторинг выключения. Окно прогресса.
Меняю со 100 секунд на 50 например в нужных местах, работает.
Но с полосой прогресса (зеленая полоса в окне счетчика) ничего сделать не получается, она под 100 секунд заточена, т.е. при установленных мной 50 секунд, эта полоса только до половины доходит.
Если это целое дело, то не нужно, это уже такое.
Loopback
подскажите пожалуйста, можно в этом коде поправить, чтоб при выходе по F11 из поноэкранного режима окно было развернуло на весь экран.
 Hidden text Code: | LoadLibrary Plugins\TCFS2Tools.dll
LoadLibrary Plugins\Autorun_Tweaks.dll
LoadLibrary Plugins\Autorun_Runtime.dll
LoadLibrary Plugins\Autorun_Sysinfo.dll
SetHotKeyAction /H:F11 ToggleFullScreen
WinGetPos('cX', 'cY', 'cW', 'cH')
If Not FileExist(AUTORUN_PATH & '\Layout.ini') Then
ShellExec /SW_HIDE /WAIT %ComSpec% '/q/c echo [Layout]>%AUTORUN_PATH%\Layout.ini'
Local sLayout = IniReadSection('~/R', COMMANDER_INI, 'Layout')
If StrPos(sLayout, '=') Then _
IniWriteSection(AUTORUN_PATH & '\Layout.ini', 'Layout', sLayout)
Else
Local sLayout = IniReadSection(AUTORUN_PATH & '\Layout.ini', 'Layout')
If StrPos(sLayout, '=') Then _
IniWriteSection('~/R', COMMANDER_INI, 'Layout', sLayout)
EndIf
### переход в полноэкранный режим при старте. НАЧАЛО
ToggleFullScreen()
Func ToggleFullScreen(WinChange=1)
Static HasTabHeader, HasStatusBar, HasDriveList, HasKeyButtons, HasCmdLine, _
HasDriveBar, HasButtonBar, HasButtonBar2, HasMainHeader
### переход в полноэкранный режим при старте КОНЕЦ (закомментировав не будет сразу в полноєкранном режиме)
IniRead /R HasCurDir %COMMANDER_INI% 'Layout' 'CurDir'
If HasCurDir Then SendMessage(AUTORUN_TCHANDLE, 11, 0)
If WinChange Then
# SPI_GETWORKAREA - desktop area without taskbar
Static wAreaX1 = SystemParametersInfo(48, 1), _
wAreaY1 = SystemParametersInfo(48, 2), _
wAreaX2 = SystemParametersInfo(48, 3), _
wAreaY2 = SystemParametersInfo(48, 4)
If HasCurDir Then
Static wX = wAreaX1 ? wAreaX1 + 1 : 0, _
wY = wAreaY1 ? wAreaY1 + 1 : 0, _
wW = wAreaX2 = SYSINFO_DESKTOPWIDTH ? wAreaX2 - wAreaX1 - 1 : wAreaX2 - wAreaX1, _
wH = wAreaY2 = SYSINFO_DESKTOPHEIGHT ? wAreaY2 - wAreaY1 - 1 : wAreaY2 - wAreaY1
If WinGetState(6) Then WinSetState(9)
WinSetPos(wX, wY, wW, wH)
Else
If WinGetState(6) Then WinSetState(9)
If cX <> '' Then WinSetPos(cX, cY, cW, cH)
EndIf
EndIf
If HasCurDir Then
HasMainHeader = WinHasStyle(12582912)
PostMessage(AUTORUN_TCHANDLE, 1075, 65538)
IniRead /R HasTabHeader %COMMANDER_INI% 'Layout' 'TabHeader' 1
IniRead /R HasStatusBar %COMMANDER_INI% 'Layout' 'StatusBar' 1
IniRead /R HasDriveList %COMMANDER_INI% 'Layout' 'DriveCombo' 1
IniRead /R HasKeyButtons %COMMANDER_INI% 'Layout' 'KeyButtons' 1
IniRead /R HasCmdLine %COMMANDER_INI% 'Layout' 'CmdLine' 1
IniRead /R HasDriveBar %COMMANDER_INI% 'Layout' 'DriveBar1' 0
IniRead /R HasButtonBar %COMMANDER_INI% 'Layout' 'ButtonBar' 1
IniRead /R HasButtonBar2 %COMMANDER_INI% 'Layout' 'ButtonBarVertical' 1
#SendCommand 2902 2
SendCommand 2906 2
SendCommand 2907 2
SendCommand 2908 2
SendCommand 2909 2
SendCommand 2910 2
SendCommand 2911 2
SendCommand 2944 2
SendCommand 2901 2
WinSetStyle 12582912 4
Else
PostMessage(AUTORUN_TCHANDLE, 1075, 65537)
If HasButtonBar Then SendCommand 2901 1
#If HasDriveBar Then SendCommand 2902 1
If HasDriveList Then SendCommand 2906 1
SendCommand 2907 1
If HasTabHeader Then SendCommand 2908 1
If HasStatusBar Then SendCommand 2909 1
If HasCmdLine Then SendCommand 2910 1
If HasKeyButtons Then SendCommand 2911 1
If HasButtonBar2 Then SendCommand 2944 1
If HasMainHeader Then WinSetStyle 12582912 2
EndIf
SendCommand 2918
If HasCurDir Then SendMessage(AUTORUN_TCHANDLE, 11, 1)
WinRedRaw 2
EndFunc |
Автозагрузка полноэкранно происходит.
Потом когда мне нужно перейти в оконный режим нажимаю F11, оно переходит в оконный режим, но окно не развернуло на весь экран.
Можно код подправить, чтоб оконный режим был развернутое на весь экран окно (не считая нижней панели Windows)? |
|