1 (изменено: Indomito, 2016-12-16 09:43:08)

Тема: AHK: Часы для Full Screen приложений

Приветствую.
И так я нашёл только это - AHK: Часы поверх Full Screen

У меня ни один скрипт не работает как нужно.
А самое главное он не учитывает дополнительные цвета, т.е. иногда часы просто не видно.

Да, я проверил:
-  Рабочой Стол : Есть
- Full Screen приложение : Нет

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

2 (изменено: freeZer0K, 2016-12-17 12:53:32)

Re: AHK: Часы для Full Screen приложений

Indomito, не знаю, поможет ли. При желании можно подредактировать под себя.
Часы с множеством настроек, в т.ч. - цвета, прозрачность, поверх всех окон и другое.
После запуска, настройки будут в трее, в контекстном меню.
Прочитать о всех можно вначале скрипта Menu, Tray, Add,.
Сохраняются в ini-файле. Чтобы настройки сохранились, запустить часы от имени админа, если скрипт будет лежать в Program Files или сразу добавь код:

If !A_IsAdmin
	{
	Run % "*RunAs """ A_ScriptFullPath """"
	ExitApp
	}

- должны сохранятся.

Если нет своего значка (*.ico) для часов, могу потом выложить.
У меня скомпиленный в exe скрипт работает очень давно, сейчас на win10-x64.
Скрипт старый, но работает исправно.
Хотел еще добавить изменение размера в зависимости от разрешения монитора, но все времени не хватает подредактировать. Размер часов подгонял под монитор 1920X1080 - неплохо смотрятся.

Код часов:

#NoEnv
#SingleInstance Force
#Persistent
DetectHiddenWindows On
SetTitleMatchMode 2
;----------------------Check If Exist Settings-----------------
Settings := A_ScriptDir . "\Settings.ini"
IniRead, Date, % Settings, Parameters, ShowDate, 0
IniRead, Background, % Settings, Parameters, HideBackground, 0
IniRead, LockPos, % Settings, Parameters, LockPosition, 0
IniRead, OnTop, % Settings, Parameters, AlwaysOnTop, 0
IniRead, PosX, % Settings, Parameters, PositionX, 0
IniRead, PosY, % Settings, Parameters, PositionY, 0
IniRead, ThroughStatus, % Settings, Parameters, ClickThroughClock, 0
IniRead, BackgroundColor, % Settings, Parameters, BackgroundColor, 000000
IniRead, ClockColor, % Settings, Parameters, ClockColor, 00FF22
IniRead, TransValue, % Settings, Parameters, Transparency, 255
RegRead, AutoLaunch, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, ScreenClock
;------------------------------------------------------------
Gui 1: +ToolWindow -Caption
Gui 1: Color, %BackgroundColor%
Gui 1: Font, s52 c%ClockColor% Bold, Cambria
Gui 1: Add, Text, x10 y-8 gMove vClock, %A_Hour% : %A_Min% : %A_Sec%`n%A_DD% %A_MMMM%`n%A_DDDD%
Gui 1: Show, x%PosX% y%PosY% w468 h244, Screen Clock
WinSet, Region, 0-0 w368 h72 R16-16, Screen Clock
WinSet, Transparent, %TransValue%, Screen Clock

SetTimer, TicTac, 1000

Menu, Tray, Tip, Screen Clock
Menu, Tray, NoStandard
Menu, Tray, Add, Автозапуск с Windows, SwitchLaunch
Menu, Tray, Add, Всегда сверху, SetOnTop
Menu, Tray, Add, Прозрачность для кликов мыши, ClickThrough
Menu, Tray, Add, Не запоминать положение, LockPosition
Menu, Tray, Add, Показать дату, SwitchTimeDate
Menu, Tray, Add, Скрыть фон часов, SwitchBackground
Menu, Tray, Add, Скрыть/Показать часы, ToggleHide
Menu, Tray, Add, Настройка цветов и прозрачности, SetClockColors
Menu, Tray, Add, О программе, About
Menu, Tray, Add, Выйти из программы, ExitApp
Menu, Tray, Default, Выйти из программы

If ThroughStatus
	{
	Gui 1:  +E0x20
	Menu, Tray, Check, Прозрачность для кликов мыши
	}
	
If OnTop = 1
	{
	WinSet, AlwaysOnTop, On, Screen Clock
	Menu, Tray, Check, Всегда сверху
	}
	
If Date = 1
	{
	WinSet, Region, 0-0 w468 h244 R16-16, Screen Clock
	Menu, Tray, Check, Показать дату
	}
	
If Background = 1
	{
	WinSet, TransColor, %BackgroundColor%, Screen Clock
	Menu, Tray, Check, Скрыть фон часов
	}
	
If LockPos = 1
	{
	Menu, Tray, Check, Не запоминать положение
	}
	
If AutoLaunch = "%A_ScriptFullPath%"
	{
	RegWrite, REG_SZ, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, ScreenClock, "%A_ScriptFullPath%"
	Menu, Tray, Check, Автозапуск с Windows
	}
;----------------------SeT Transparency --------------------
#IfWinActive, Screen Clock
	{
	!WheelUp::
	If TransValue <= 255
		{
		TransValue += 5
		WinSet, Transparent, %TransValue%, Screen Clock
		}
	Return

	!WheelDown::
	If TransValue >= 15
		{
		TransValue -= 5
		WinSet, Transparent, %TransValue%, Screen Clock
		}
	Return
	}
;------------------------------------------------------------
Return
;----------------------Enable Window Drag -------------------
Move:
PostMessage, 0xA1, 2,,, A
If A_GuiEvent = DoubleClick
GoSub, ShowHideClock
Return
;------------------------------------------------------------
;----------------------Clock Engine :P-----------------------
TicTac:
GuiControl,, Clock, %A_Hour% : %A_Min% : %A_Sec%`n%A_DD% %A_MMMM%`n%A_DDDD%
Return
;------------------------------------------------------------
;---------------------Show/Hide Clock---------------------
ShowHideClock:
ToggleHide:
Toggle:=!Toggle
If Toggle
WinHide, Screen Clock
Else,
WinShow, Screen Clock
Return
;------------------------------------------------------------
;---------------------Don't Save Position--------------------
LockPosition:
If LockPos = 1
	{
	LockPos = 0
	Menu, Tray, UnCheck, Не запоминать положение
	IniWrite, 0, % Settings, Parameters, LockPosition
	}
	Else
		{
		LockPos = 1
		GoSub, SavePos
		Menu, Tray, Check, Не запоминать положение
		IniWrite, 1, % Settings, Parameters, LockPosition
		}
Return
;------------------------------------------------------------
;----------------------Set Clock Colors----------------------
SetClockColors:
SPosX := (899)-50 
SPosY := (688)-160
Gui, 2:Color, %BackgroundColor%
Gui, 2:+ToolWindow +AlwaysOnTop -Caption
Gui, 2:Font, S12 c%ClockColor% Bold, Cambria
Gui, 2:Add, Text, gMove, Screen Clock - Настройки
Gui, 2:Add, Text, xp+210 gGui2Close, X
Gui, 2:Add, GroupBox, xp-210 yp+20 w220 h94 Center, Цвета
Gui, 2:Add, Text, xp+10 yp+28, Цвет фона:
Gui, 2:Add, Button, xp+120 yp-0 w74 h20 vBackgroundColorBtn gBackColorSet, Выбрать
Gui, 2:Add, Text, xp-120 yp+28, Цвет часов:
Gui, 2:Add, Button, xp+120 yp-0 w74 h20 vClockColorBtn gClockColorSet, Выбрать
Gui, 2:Add, GroupBox, xp-130 yp+44 wp+146 h60 Center, Уровень прозрачности
Gui, 2:Add, Slider, xp+5 yp+26 w210 h26 Range15-255 gSetTransparency vTransValue, %TransValue%
Gui, 2:Show, x%SPosX% y%SPosY% w250 h206, Screen Clock - Настройки
WinSet, Region, 0-0 w250 h206 R16-16, Screen Clock - Настройки
WinSet, Transparent, %TransValue%, Screen Clock - Настройки
Return

Gui2Close:
Gui2Escape:
Gui, 2:Destroy
Reload
Return
;------------------------------------------------------------
;-----------------Set Clock Background Color-----------------
BackColorSet:
Gui, Submit, NoHide
BackgroundColor:=ChooseColorA( 0x000000)
If BackgroundColor <>
	{
	IniWrite, %BackgroundColor%, % Settings,parameters, BackgroundColor
	Gui 1: Color, %BackgroundColor%
	GuiControl, 2:, BackgroundColorBtn, %BackgroundColor%
	}
Return
;-----------------------Set Clock Color----------------------
ClockColorSet:
Gui, Submit, NoHide
ClockColor:=ChooseColorA( 0xffffff)
If ClockColor <>
	{
	IniWrite, %ClockColor%, % Settings,parameters, ClockColor
	Gui 1: Font, c%ClockColor%
	GuiControl, 1:Font, Clock
	GuiControl, 2:, ClockColorBtn, %ClockColor%
	}
Return
;------------------------------------------------------------
;-----------------------Set Transparency----------------------
SetTransparency:
Gui, Submit, NoHide
WinSet, Transparent, %TransValue%, Screen Clock
IniWrite, %TransValue%, % Settings, Parameters, Transparency
Return
;------------------------------------------------------------
;-----------------------Set AlwaysOnTop----------------------
SetOnTop:
If OnTop = 1
	{
	OnTop = 0
	WinSet, AlwaysOnTop, Off, Screen Clock
	IniWrite, 0, % Settings, Parameters, AlwaysOnTop
	Menu, Tray, UnCheck, Всегда сверху
	}
	Else
		{
		OnTop = 1
		WinSet, AlwaysOnTop, On, Screen Clock
		IniWrite, 1, % Settings, Parameters, AlwaysOnTop
		Menu, Tray, Check, Всегда сверху
		}
Return
;------------------------------------------------------------
;----------------Show/Hide Day of Month & Week---------------
SwitchTimeDate:
If Date = 1
	{
	Date = 0
	WinSet, Region, 0-0 w368 h72 R16-16, Screen Clock
	IniWrite, 0, % Settings, Parameters, ShowDate
	Menu, Tray, UnCheck, Показать дату
	}
	Else
		{
		Date = 1
		WinSet, Region, 0-0 w468 h244 R16-16, Screen Clock
		IniWrite, 1, % Settings, Parameters, ShowDate
		Menu, Tray, Check, Показать дату
		}
Return
;------------------------------------------------------------
;------------------Show/Hide Background of Clock-------------
SwitchBackground:
If Background = 1
	{
	Background = 0
	WinSet, Transparent, %TransValue%, Screen Clock
	IniWrite, 0, % Settings, Parameters, HideBackground
	Menu, Tray, UnCheck, Скрыть фон часов
	}
	Else
		{
		Background = 1
		WinSet, TransColor, %BackgroundColor%, Screen Clock
		IniWrite, 1, % Settings, Parameters, HideBackground
		Menu, Tray, Check, Скрыть фон часов
		}
Return
;------------------------------------------------------------
;-------------------AutoLaunch with Windows------------------
SwitchLaunch:
If AutoLaunch = "%A_ScriptFullPath%"
	{
	AutoLaunch = 0
	RegDelete, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, ScreenClock
	Menu, Tray, UnCheck, Автозапуск с Windows
	}
	Else
		{
		AutoLaunch = "%A_ScriptFullPath%"
		RegWrite, REG_SZ, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, ScreenClock, "%A_ScriptFullPath%"
		Menu, Tray, Check, Автозапуск с Windows
		}
Return
;------------------------------------------------------------
ExitApp:
If LockPos <> 1
GoSub, SavePos
Sleep, 500
ExitApp
Return
;---------------------Save Clock Position--------------------
SavePos:
WinGetPos, PosX,PosY,,, Screen Clock
IniWrite, %PosX%,% Settings, Parameters, PositionX
IniWrite, %PosY%,% Settings, Parameters, PositionY
Return
;------------------------------------------------------------
;------------------Click Through Clock Window-----------------
;Gui 1:  +E0x80000 +LastFound +OwnDialogs +Owner -caption +E0x20 remove this
ClickThrough:
ThroughStatus:=!ThroughStatus
If ThroughStatus
	{
	Gui 1:  +E0x20
	Menu, Tray, ToggleCheck, Прозрачность для кликов мыши
	IniWrite, %ThroughStatus%, % Settings, Parameters, ClickThroughClock
	}
	Else
		{
		Gui 1:  -E0x20
		Menu, tray, ToggleCheck, Прозрачность для кликов мыши
		IniWrite, %ThroughStatus%, % Settings, Parameters, ClickThroughClock
		}
Return
;------------------------------------------------------------

ChooseColorA( CR=0x0, hWnd=0x0, X=25, Y=25, Title=0, CustomColors=0, RGB=1 ) {

 Static CC, Color = "000000", S22 = "                      ", ATOU = "MultiByteToWideChar"
 If ! ( VarSetCapacity( CC ) ) {
 CCD =
 ( LTrim Join
   24ZV47ZV8N8J808N8H8H8J808HC0C0CH80808HFFMFFIFFFFMFFGFFGFFIFFFFGFFFFFFGC020C88G8K1BH2K2A
   01B8O43G43G68G6FG6FG73G65G43G6FG6CG6FG72G41G2H2H2H2H2H2H2H2H2H2H2H2H2H2H2H2H2H2H2M8G4DG
   53G2H53G68G65G6CG6CG2H44G6CG67P25O4H4G8CH9GFFFFFFFF82G26G42G61G73G69G63G2H63G6FG6CG6FG7
   2G73G3ATBH35O4HEG8CG56GDG2FFFF82X25O4G6AG8CH9GFFFFFFFF82G26G43G75G73G74G6FG6DG2H63G6FG6
   CG6FG72G73G3APBH35O4G74G8CG1CGD102FFFF82X35O4G96G8CHEGCF02FFFF8H26G44G65G66G69G6EG65G2H
   43G75G73G74G6FG6DG2H43G6FG6CG6FG72G73G2H3EG3ET1H35O4GA6G2CHEH1GFFFF8H4FG4BX35N34GA6G2CH
   EH2GFFFF8H43G61G6EG63G65G6CX35N64GA6G2CHEHE04FFFF8H26G48G65G6CG7QB1H5N98H4G76G74GC602FF
   FF82TB1H5N180104H8G74GBE02FFFF82TB1H5N98G7CG28G1AGC502FFFF82X35N2C01C8H4HEGC902FFFF8H26
   G6FT2H25N98G97G14H9GDA02FFFF82G43G6FG6CG6FG72T25NACG97G14H9GDB02FFFF82G7CG53G26G6FG6CG6
   9G64P2H25NC2G7EG14H9GD302FFFF82G48G75G26G65G3AS835ND8G7CG12HCGBF02FFFF81T2H25NC2G8CG14H
   9GD402FFFF82G26G53G61G74G3AS835ND8G8AG12HCGCG2FFFF81T2H25NC2G9AG14H9GD502FFFF82G26G4CG7
   5G6DG3AS835ND8G98G12HCGC102FFFF81T2H25NF3G7EG18H9GD602FFFF82G26G52G65G64G3AS835OD017CG1
   2HCGC202FFFF81T2H25NF3G8CG18H9GD702FFFF82G26G47G72G65G65G6EG3AS835OD018AG12HCGC302FFFF8
   1T2H25NF3G9AG18H9GD802FFFF82G42G6CG26G75G65G3AW835OD0198G12HCGC402FFFF81X35N98GA6G8EHEG
   C802FFFF8H26G41G64G64G2H74G6FG2H43G75G73G74G6FG6DG2H43G6FG6CG6FG72G73O
 )
 Loop 20
  StringReplace,CCD,CCD,% Chr(70+21-A_Index),% SubStr("000000000000000000000",A_Index),All
 Loop % VarSetCapacity(CC,StrLen(CCD)//2,0)
  NumPut( "0x" . SubStr(CCD, 2*A_Index-1,2),CC,A_Index-1,"Char" )
 }
 Numput( &CC+100,CC,8 ), NumPut( &CC+36,CC,16 )
 IfNotEqual,CustomColors,0, Loop, Parse, CustomColors, |
 _ := (A_LoopField<>"" && A_Index<17) ? NumPut("0x" A_LoopField,CC,36+(4*(A_Index-1))) : 0
 Title ? DllCall( ATOU, Int,0,Int,0, Str,Title S22, UInt,22, UInt,&CC+122, UInt,44 ) : 0
 NumPut(Y,CC,112,"UShort"), NumPut(X,CC,110,"UShort"), NumPut(hWnd,CC,4)
 WinExist( "ahk_id" hWnd ) ? NumPut(0,CC,104) : 0
 RGB ? NumPut((((CR&0xFF)<<16)|(CR&0xFF00)|((CR&0xFF0000)>>16)),CC,12) : NumPut(CR,CC,12)
 If ! DllCall( "comdlg32\ChooseColorA", UInt,&CC ) || ErrorLevel
      Return
 DllCall( "msvcrt\sprintf", Str,Color, Str,"%06X", UInt, RGB ? ( (((CR:=Numget(CC,12) )
  &0xFF)<<16)|(CR&0xFF00)|((CR&0xFF0000)>>16)) : Numget(CC,12) )
Return Color
}

;------------------------------------------------------------
About:
MsgBox, 0x40, Screen Clock, Часы для рабочего стола.
Return
;------------------------------------------------------------

3 (изменено: Indomito, 2016-12-17 18:59:55)

Re: AHK: Часы для Full Screen приложений

freeZer0K
Спасибо, проверю.

+ Я с INI поступаю проще, но нужна компиляция.
;Скрипт не выгружается до явного определения
#Persistent
;Запрет повторного запуска
#SingleInstance  Force

;***Пропуск не нужного кода********

  IfNotExist, Asterios.res
    {
      FileCreateDir, Asterios.res     ; Создаём папку для ресурсов
      FileSetAttrib, +H, Asterios.res ; Делаем её скрытой
    }
  FileInstall, c:\AHK\Add\LA2Asterios\Asterios.res\Asterios.ini, Asterios.res\Asterios.ini, 0
  FileInstall, c:\AHK\Add\LA2Asterios\Asterios.res\intel inside.mp3, Asterios.res\intel inside.mp3, 0
  FileInstall, c:\AHK\Add\LA2Asterios\Asterios.res\AllWin.lnk, Asterios.res\AllWin.lnk, 0

;***Пропуск не нужного кода********

  Gosub ReadAsteriosINI
  
;***Пропуск не нужного кода********  
  
Return

;-----Резидентная часть скрипта
Return
 
ReadAsteriosINI:
  IniRead, NameLNC, Asterios.res\Asterios.ini, Main, NameLNC
    if (NameLNC="ERROR")
      {
        MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
            ,`n`n  Переменная INI-файла  NameLNC `n Определена не верно или не существует`n`n Выход из программы.
            ,30      
        Goto lEnd_AHK_LA2Asterios
      }
  
  IfNotExist, %NameLNC%
     {
        MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
            ,`n`n  Переменная INI-файла  NameLNC содержит не верный файл! `n`n NameLNC=%NameLNC%`n`n Исправте пожалуйста.`n`n`n Выход из программы.
            ,30      
     Goto lEnd_AHK_LA2Asterios
     } 
;***Пропуск не нужного кода********  
Return
     

Правда я не понял как они работают поверх любого  Full Screen приложения, т.е. видно но...

«Моцарт! У вас слишком много нот!» – сказал на премьере оперы «Похищение из Сераля» император Иосиф II.

Мне бы просто имя окна Full Screen приложения и просто код часов - настройки я сам допишу, только часы - дальше я сам.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

4 (изменено: freeZer0K, 2016-12-19 19:37:25)

Re: AHK: Часы для Full Screen приложений

Indomito, я писал не весь код, а только переделывал и добавлял что-то, уже и не помню что именно.
Скрипт весь прокомментирован, так что не составит труда удалить ненужные блоки.
Можно даже переделать настройки на реестр, чтобы с ini заморочек не было.

Надеюсь, помог. Удачи!

5

Re: AHK: Часы для Full Screen приложений

freeZer0K

Поверх Full Screen приложения - не работают.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

6

Re: AHK: Часы для Full Screen приложений

http://forum.script-coding.com/viewtopic.php?id=11898

7

Re: AHK: Часы для Full Screen приложений

Indomito
В трее на значке скрипта часов, контекстное меню грызуна - "Всегда сверху".
У меня работает поверх JRiver Media Center и PotPlayer в полноэкранном режиме при просмотре фильмов и TV.
Сверху игр не пробовал и сомневаюсь, что будут работать ...

8

Re: AHK: Часы для Full Screen приложений

freeZer0K, попробовал ваш код.
1) Поверх Windows media player не работает.
2) Часы постоянно моргают, что мне лично бьет по глазам.

9 (изменено: Indomito, 2016-12-21 10:10:56)

Re: AHK: Часы для Full Screen приложений

Malcev
Проверил, твой код из поста №9.
Работает для Рабочего Стола, для Adobe Photoshop CS6 x64 и для MPC-HC x64 - ОК.
Для гарантии стал проверять на играх - не работает, игры старые и новые - ни одна не показывает.


Попробовал такой код.

SetTitleMatchMode, 1
#If WinActive(WinName)
F12::
;SetTitleMatchMode, Slow ;Fast|Slow
WinHND  := WinActive(WinName)
; WinGet, WinHND, ID, A
Gui, +0x40000000 -0x80000000  +Owner%WinHND% -Caption +AlwaysOnTop +Lastfound
Gui, Color, Black
WinSet, TransColor, Black
Gui, Font, s22, MS sans serif
Gui, Add, Text, cYellow, Часы
Gui, Show, y0 x50 NA
return
#If

Тоже не помогло.

P.S. А вот это может решить проблему - AHK: Поточечный вывод изображения из файла на экран?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

10 (изменено: Malcev, 2016-12-21 14:09:37)

Re: AHK: Часы для Full Screen приложений

Насчет игр не в курсе.

11 (изменено: Indomito, 2016-12-22 01:55:26)

Re: AHK: Часы для Full Screen приложений

Malcev
Я понял что нужно.
Требуется OSD-библиотека т.е. dll.

OSD(On-Screen Display, перев. с англ. "дисплей на экране") образ или текст отображаемый поверх основного изображения.

Есть возможность этого для реализации на  AHK?




P.S. На основе OSD-библиотек работают Fraps, PlayСlaw и их аналоги.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

12

Re: AHK: Часы для Full Screen приложений

Не знаю про какие такие вы osd библиотеки говорите.
Fraps работает так:
http://superuser.com/questions/541467/o … -of-window
Гуглите "directx autohotkey".

13

Re: AHK: Часы для Full Screen приложений

Malcev
Спасибо, попробую найти.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download