Покройте неактивные окна с помощью графического интерфейса, Решения с переменными координатами (AHK) - PullRequest
0 голосов
/ 28 августа 2018

Я сворачиваю все окна в строки заголовка, когда не активен. Я хочу покрыть эти неактивные окна различными цветными графическими интерфейсами. Для графического интерфейса потребуются только минимальные функциональные возможности, только способ раскрасить заголовки строк в свернутом виде и неактивный. Таким образом, я могу сказать, что гораздо проще, когда смотрю на рабочий стол, полный строк заголовка.

Хотя я знаю, что у меня хранятся правильные координаты в качестве переменных, графический интерфейс вообще не отображается, если я указываю координаты в виде чисел или переменных. Но если я не укажу какие-либо координаты, графический интерфейс появится в середине экрана.

Это просто похоже на комбинацию

-settimer и таймер, который обновляет координаты при перемещении окна.

-alwaysontop (ish) определенного окна для каждого графического интерфейса (здесь можно воспользоваться некоторой справкой. Если вы хотите применить winset, вернитесь к графическому интерфейсу, когда связанное с ним окно неактивно, но также остается под любым новым активным окном (чтобы сохранить GUI виден при взгляде на рабочий стол).

- используя координату y соответствующего окна, чтобы узнать, как высоко разместить GUI (основная проблема, хотя я знаю, что у меня правильные координаты, хранящиеся в виде переменных)

- отображение разных цветов для каждого графического интерфейса.

- GUI должен охватывать всю ширину экрана и быть 1/17 высоты экрана (примерно высота строки заголовка с моим экраном / разрешением).

- скрыть графический интерфейс окна, когда связанное с ним окно активно, и окно, когда оно неактивно

    #SingleInstance,Force
    WinGetPos , X_SciTEWindow, Y_SciTEWindow, Width_SciTEWindow, Height_SciTEWindow, ahk_class SciTEWindow ;I don't even need the X_SciTEWindow, because the bars will all be aligned at x0, but it's there... 
    SysGet, aScreenHeight, 1 
    bar_height := Round(aScreenHeight / 17)
    Gui, Color, aqua,FFB1B1
    Gui, Show, w%A_ScreenWidth% h%bar_height%, SomeStupidBar
    WinSet, Style,  -20xC40000
    Winmove, %SomeStupidBar%,  x0, y%Y_SciTEWindow%, w%A_ScreenWidth%, h%bar_height%
    MsgBox, Time to move the window to x0, y%Y_SciTEWindow%, w%A_ScreenWidth%, h%bar_height%
    Winmove, %SomeStupidBar%,  x0, y%Y_SciTEWindow%, w%A_ScreenWidth%, h%bar_height%
    return
    Esc::ExitApp


    SetTimer, ShowGui, 500
    ShowGui:    
    IfWinNotExist, ahk_class AutohotkeyGUI
    {
    Gui, +Owner%WinID% +Border +ToolWindow 
    Gui, Show, NoActivate x%X% y%Y% w51 h431, %GuiTitle%
    }
    else
    {
    WinWaitActive, ahk_class SciTEWindow
    WinGetPos, X_SciTEWindow, Y_SciTEWindow,,, ahk_class Notepad
    WinGet, WinID, ID, ahk_class SciTEWindow,,,
    IfWinNotExist, ahk_class AutohotkeyGUI
    WinGetPos, %SomeStupidBar%, , , ,  ahk_class AutohotkeyGUI
    If %SomeStupidBar%<>X - 56
    WinMove, ahk_class AutohotkeyGUI,  X - 56
    }
    return

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 29 августа 2018
#NoEnv
#SingleInstance Force

Gui, SciTE: +Owner -Caption
Gui, SciTE: Color, aqua 

Gui, Notepad: +Owner -Caption
Gui, Notepad: Color, red

SysGet, aScreenHeight, 1 
bar_height := Round(aScreenHeight / 17)

SetTimer, ShowGui, 500
return

Esc::ExitApp

ShowGui:
If !WinExist("ahk_class SciTEWindow") ; means "NOT"
    Gui, SciTE: Cancel
else
{
    WinGetPos, X_SciTE, Y_SciTE,,, ahk_class SciTEWindow
    If X_SciTE >= 0
    Gui, SciTE:  Show, NoActivate x%X_SciTE% y%Y_SciTE% w51 h%bar_height%, SciTEWindow
}
If !WinExist("ahk_class Notepad")
    Gui, Notepad: Cancel
else
{
    WinGetPos, X_Notepad, Y_Notepad,,, ahk_class Notepad
    If X_Notepad >= 0
    Gui, Notepad:  Show, NoActivate x%X_Notepad% y%Y_Notepad% w51 h%bar_height%, Notepad
}
return

#If WinActive("ahk_class AutoHotkeyGUI")

    ~*LButton Up::
        WinGetTitle, ActiveTitle, A         
        WinActivate, ahk_class %ActiveTitle%    
    return

#If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...