1

Тема: AHK: Как нарисовать рамку вокруг окна ?

Типа так:

+ открыть спойлер

http://f4.s.qip.ru/AUIOPO4f.png

в справке по канве ничё не нашёл, как быть ?

2

Re: AHK: Как нарисовать рамку вокруг окна ?

Поищи по форуму по слову "рамка".

3

Re: AHK: Как нарисовать рамку вокруг окна ?

Malcev пишет:

Поищи по форуму по слову "рамка".

спасиб, сразу нашёл : DDDD

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

4 (изменено: Hydrogenium, 2013-06-09 02:27:51)

Re: AHK: Как нарисовать рамку вокруг окна ?

Активное окно моргает красным
Подскажите где ошибка

+ открыть спойлер
 
 
#Persistent          
#SingleInstance Force 
#WinActivateForce     
 
TH = 2   ; толщина рамки
Col = Red

SetWinDelay, 0
Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled

SetTimer, Frame, 50
Return

;~ ------------------------------------------------------------------------------------------------
Frame:
{
   ;~ WinGet, ID
   WinGet, active_id, ID, A 
   WinGetPos, X, Y, W, H, A
   SetFrame(active_id, Col, X, Y, W, H)
}
 
;~ ------------------------------------------------------------------------------------------------
SetFrame(active_id, Col, X, Y, W, H)
{
   Gui, Color, %Col%   
   
   if (X = XPrev && Y = YPrev && W = WPrev && H = HPrev)
      Return

   XPrev := X
   YPrev := Y
   WPrev := W
   HPrev := H
   X -= TH 
   Y -= TH
   W += 2*TH 
   H += 2*TH

   Gui, Show, x%X% y%Y% w%W% h%H% Hide
   Options := "0-0 " W "-0 " W "-" H " 0-" H " 0-0 " TH "-" TH
      . " " W-TH "-" TH " " W-TH "-" H-TH " " TH "-" H-TH " " TH "-" TH
   DetectHiddenWindows, On
   WinSet, Region, % Options, ahk_id %active_id%
   Gui, Show, NA
   ;~ Return
}

5

Re: AHK: Как нарисовать рамку вокруг окна ?

?
((((

6

Re: AHK: Как нарисовать рамку вокруг окна ?

А каким оно должно моргать? Вот же вы пишете


Col = Red

SetFrame(active_id, Col, X, Y, W, H)
{
   Gui, Color, %Col%   

7 (изменено: Irbis, 2013-06-10 16:45:15)

Re: AHK: Как нарисовать рамку вокруг окна ?

Перед завершением секции автовыполнения сделайте вызов подпрограммы таймера:

GoSub Frame

Ну и по "мелочи":
- XPrev и прочие переменные для запоминания предыдущих координат не сохраняют свои значения между вызовами, если они не Static;
- Переменная TH внутри процедуры SetFrame() не определена, если она туда не передается в кач-ве параметра, или если она не определена как глобальная;
- Непонятно назначение передаваемой в процедуру SetFrame() переменной active_id - в ней WinSet применяется к созданному GUI, а не к активному окну, так что active_id не нужен. Если нужно "оконтурить" окно, отличное от активного, то передаваемых в процедуру SetFrame() координат достаточно для этого.

+ Примерно так
#Persistent          
#SingleInstance Force 
#WinActivateForce     
Col = Red
TH := 2
SetWinDelay, 0
SetTimer, Frame, 50
Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled
GoSub Frame
Return

;~ ------------------------------------------------------------------------------------------------
Frame:
   WinGet, active_id, ID, A 
   WinGetPos, X, Y, W, H, A
   SetFrame(Col, X, Y, W, H, TH)
Return
 
;~ ------------------------------------------------------------------------------------------------
SetFrame(Col, X, Y, W, H, TH)
{
   Gui, Color, %Col%   
   static XPrev,YPrev,WPrev,HPrev
   if X && !(X = XPrev && Y = YPrev && W = WPrev && H = HPrev)
   {
      XPrev := X, YPrev := Y, WPrev := W, HPrev := H
      X -= TH, Y -= TH, W += 2*TH, H += 2*TH
      Gui, Show, x%X% y%Y% w%W% h%H% Hide
      Options := "0-0 " W "-0 " W "-" H " 0-" H " 0-0 " TH "-" TH
         . " " W-TH "-" TH " " W-TH "-" H-TH " " TH "-" H-TH " " TH "-" TH
      WinSet, Region, % Options

      Gui, Show, NA
   }
   Return
}

8 (изменено: Hydrogenium, 2013-06-10 18:58:45)

Re: AHK: Как нарисовать рамку вокруг окна ?

YMP пишет:

А каким оно должно моргать? Вот же вы пишете


Col = Red

SetFrame(active_id, Col, X, Y, W, H)
{
   Gui, Color, %Col%   

должна рисоваться рамка (вы читали заголовок этой темы ?), а не окно моргать

9

Re: AHK: Как нарисовать рамку вокруг окна ?

Irbis пишет:
+ Примерно так
#Persistent          
#SingleInstance Force 
#WinActivateForce     
Col = Red
TH := 2
SetWinDelay, 0
SetTimer, Frame, 50
Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled
GoSub Frame
Return

;~ ------------------------------------------------------------------------------------------------
Frame:
   WinGet, active_id, ID, A 
   WinGetPos, X, Y, W, H, A
   SetFrame(Col, X, Y, W, H, TH)
Return
 
;~ ------------------------------------------------------------------------------------------------
SetFrame(Col, X, Y, W, H, TH)
{
   Gui, Color, %Col%   
   static XPrev,YPrev,WPrev,HPrev
   if X && !(X = XPrev && Y = YPrev && W = WPrev && H = HPrev)
   {
      XPrev := X, YPrev := Y, WPrev := W, HPrev := H
      X -= TH, Y -= TH, W += 2*TH, H += 2*TH
      Gui, Show, x%X% y%Y% w%W% h%H% Hide
      Options := "0-0 " W "-0 " W "-" H " 0-" H " 0-0 " TH "-" TH
         . " " W-TH "-" TH " " W-TH "-" H-TH " " TH "-" H-TH " " TH "-" TH
      WinSet, Region, % Options

      Gui, Show, NA
   }
   Return
}

а почему рисуется не полная рамка ?

+ открыть спойлер

http://f3.s.qip.ru/AUIOPO66.png

10 (изменено: Irbis, 2013-06-10 20:50:31)

Re: AHK: Как нарисовать рамку вокруг окна ?

Перенеси строку Gui, +LastFound... в подпрограмму таймера:

Frame:
   WinGet, active_id, ID, A 
   WinGetPos, X, Y, W, H, A
   Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled
   SetFrame(Col, X, Y, W, H, TH)
Return
 

11 (изменено: Hydrogenium, 2013-06-18 08:07:16)

Re: AHK: Как нарисовать рамку вокруг окна ?

+ открыть спойлер

#Persistent          
#SingleInstance Force 
#WinActivateForce     

ColorFrame = Red
TH := 4
SetWinDelay, 0

SetTimer, Frame, 50
;GoSub Frame
Return

;~ ------------------------------------------------------------------------------------------------
Frame:
   WinGet, active_id, ID, A
   WinGetTitle, this_title, ahk_id %active_id%
   WinGetPos, X, Y, W, H, Калькулятор

   if (this_title = "Калькулятор")     
      SetFrame(ColorFrame, X, Y, W, H, TH)
   else
      Gui, Hide     
Return
 
;~ ------------------------------------------------------------------------------------------------
SetFrame(Col, X, Y, W, H, TH)
{   
   static XPrev,YPrev,WPrev,HPrev   
 
   if (X = XPrev && Y = YPrev && W = WPrev && H = HPrev)
      Return   
 
   Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled  
   Gui, Color, %Col%   
   
   XPrev := X
   YPrev := Y 
   WPrev := W
   HPrev := H
   X -= TH
   Y -= TH
   W += 2*TH
   H += 2*TH
      
   Gui, Show, x%X% y%Y% w%W% h%H% Hide
   Options := "0-0 " W "-0 " W "-" H " 0-" H " 0-0 " TH "-" TH
   . " " W-TH "-" TH " " W-TH "-" H-TH " " TH "-" H-TH " " TH "-" TH
   WinSet, Region, % Options       
   
   Gui, Show, NA    
   
   Return
}

активирую Калькулятор - рамка рисуется
активирую любое другое окно - рамка прячется
опять активирую Калькулятор - рамка НЕ рисуется, пока я его не сдвину

как сделать, чтобы рамка рисовалась всегда, когда я активирую калькулятор и при этом не моргала ?

12 (изменено: serzh82saratov, 2013-06-19 12:28:02)

Re: AHK: Как нарисовать рамку вокруг окна ?

как сделать, чтобы рамка рисовалась всегда, когда я активирую калькулятор

+ например так:

Global ColorFrame := "Red", TH := 4, WPrev
SetWinDelay, 0

SetTimer, Frame, 50
;GoSub Frame
Return

;~ ------------------------------------------------------------------------------------------------
Frame:
   WinGet, active_id, ID, A
   WinGetTitle, this_title, ahk_id %active_id%
   WinGetPos, X, Y, W, H, Калькулятор

    if (this_title = "Калькулятор")     
        SetFrame(ColorFrame, X, Y, W, H, TH)
    else
    {
        Gui, Hide
        WPrev := ""
    }
Return

SetFrame(Col, X, Y, W, H, TH)
{   
   static XPrev,YPrev,HPrev   
 
   if (X = XPrev && Y = YPrev && W = WPrev && H = HPrev)
      Return   
 
   Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled  
   Gui, Color, %Col%   
   
   XPrev := X
   YPrev := Y 
   WPrev := W
   HPrev := H
   X -= TH
   Y -= TH
   W += 2*TH
   H += 2*TH
      
   Gui, Show, x%X% y%Y% w%W% h%H% Hide
   Options := "0-0 " W "-0 " W "-" H " 0-" H " 0-0 " TH "-" TH
   . " " W-TH "-" TH " " W-TH "-" H-TH " " TH "-" H-TH " " TH "-" TH
   WinSet, Region, % Options       
   
   Gui, Show, NA    
   
   Return
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13 (изменено: Hydrogenium, 2013-06-18 16:15:21)

Re: AHK: Как нарисовать рамку вокруг окна ?

serzh82saratov, странная тенденция у AHK программистов - мыслить локально

Notepad++

Калькулятор - это тестовое окно, и к реальным и.т.п. окнам не имеет отношения

14

Re: AHK: Как нарисовать рамку вокруг окна ?

serzh82saratov, странная тенденция у AHK программистов - мыслить локально

Ну простите.
За всех AHK программистов я не скажу.

Видимо ваш образ мышления, мне не понять.
Думаю у вас все шансы, с вашим словесным оборотом, постичь все тайны.
Тут уж, без вариантов.
Был не прав, прошу, искреннего прощения.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15 (изменено: Hydrogenium, 2013-06-18 18:31:37)

Re: AHK: Как нарисовать рамку вокруг окна ?

serzh82saratov, извинения приняты, исправляйтесь ))))

+ открыть спойлер

давай без обид )))

16 (изменено: Hydrogenium, 2013-06-19 07:35:40)

Re: AHK: Как нарисовать рамку вокруг окна ?

Давайте немного другой рассмотрим вопрос
Есть код, который рисует рамку

+ открыть спойлер

#Persistent          
#SingleInstance Force 
#WinActivateForce     

ColorFrame = Red
TH := 4
SetWinDelay, 0

SetTimer, Frame, 50
;~ GoSub Frame
Return

;~ ------------------------------------------------------------------------------------------------
Frame:
   WinGet, active_id, ID, A
   WinGetTitle, this_title, ahk_id %active_id%
   WinGetPos, X, Y, W, H, Калькулятор

   if (this_title = "Калькулятор")     
      SetFrame(ColorFrame, X, Y, W, H, TH)   
Return
 
;~ ------------------------------------------------------------------------------------------------
SetFrame(Col, X, Y, W, H, TH)
{   
   static XPrev,YPrev,WPrev,HPrev   
 
   if (X = XPrev && Y = YPrev && W = WPrev && H = HPrev)
      Return   
 
   Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled  
   Gui, Color, %Col%   
   
   XPrev := X
   YPrev := Y 
   WPrev := W
   HPrev := H
   X -= TH
   Y -= TH
   W += 2*TH
   H += 2*TH
      
   Gui, Show, x%X% y%Y% w%W% h%H% Hide
   Options := "0-0 " W "-0 " W "-" H " 0-" H " 0-0 " TH "-" TH
   . " " W-TH "-" TH " " W-TH "-" H-TH " " TH "-" H-TH " " TH "-" TH
   WinSet, Region, % Options       
   
   Gui, Show, NA    
   
   Return
}

какой нужно добавить/изменить код в SetFrame, чтобы рамка всегда вставала cпереди нужного (окон будет несколько)
только нужного окна, а не поверх всех

у Gui есть тока AlwaysOnTop
WinSet не понятно как ставить на нужную z-посл.

17

Re: AHK: Как нарисовать рамку вокруг окна ?

Вот код:

+ открыть спойлер

ColorFrame := "Red" 
TH := 7  

global WPrev      

TimerFrame:
{   
   SetTimer, TimerFrame, Off
   
   WinGet, active_id, ID, A     

   if CheckWin(active_id) 
   {
      WinGetPos, X, Y, W, H, ahk_id %active_id%   
      SetFrame(ColorFrame, X, Y, W, H, TH)
   }
   else
   {
      Gui, Hide
      WPrev := ""
   }  

   SetTimer, TimerFrame, On
}

SetFrame(Col, X, Y, W, H, TH)
{   
   static XPrev, YPrev, HPrev   
 
   if (X = XPrev && Y = YPrev && W = WPrev && H = HPrev)
      Return   
 
   Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled  
   Gui, Color, %Col%   
   
   XPrev := X
   YPrev := Y 
   WPrev := W
   HPrev := H  

   Gui, Show, x%X% y%Y% w%W% h%H% Hide
   Options := "0-0 " W "-0 " W "-" H " 0-" H " 0-0 " TH "-" TH
   . " " W-TH "-" TH " " W-TH "-" H-TH " " TH "-" H-TH " " TH "-" TH
   WinSet, Region, % Options       
   
   Gui, Show, NA   
}

Выпадает иногда такая ошибка:

+ открыть спойлер

http://5.firepic.org/5/images/2013-07/09/ouhoeakd1nsh.png

В чём дело ?

18

Re: AHK: Как нарисовать рамку вокруг окна ?

Вероятно, переменные X Y W H пустые.

19 (изменено: Hydrogenium, 2013-07-09 22:05:39)

Re: AHK: Как нарисовать рамку вокруг окна ?

YMP пишет:

Вероятно, переменные X Y W H пустые.

а как корректнее сделать проверку ?

если так

   
if (X = 0 or Y = 0 or W = 0 or H = 0 )
      Return  
 

но, x и y могут быть = 0

или надо так ?

if (X =  or Y =  or W =  or H =  )
      Return  

20

Re: AHK: Как нарисовать рамку вокруг окна ?

Можно так:


If (X = "") or (Y = "") or (W = "") or (H = "")

21

Re: AHK: Как нарисовать рамку вокруг окна ?

YMP пишет:

Можно так:


If (X = "") or (Y = "") or (W = "") or (H = "")

спасиб ))

22

Re: AHK: Как нарисовать рамку вокруг окна ?

+ открыть спойлер
ColorFrame := "Red" 
TH := 7  

global WPrev      

TimerFrame:
{   
   SetTimer, TimerFrame, Off
   
   WinGet, active_id, ID, A     

   if CheckWin(active_id) 
   {
      WinGetPos, X, Y, W, H, ahk_id %active_id%   
      SetFrame(ColorFrame, X, Y, W, H, TH)
   }
   else
   {
      Gui, Hide
      WPrev := ""
   }  

   SetTimer, TimerFrame, On
}

SetFrame(Col, X, Y, W, H, TH)
{   
   static XPrev, YPrev, HPrev   
 
   if (X = XPrev && Y = YPrev && W = WPrev && H = HPrev)
      Return   
 
   Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled  
   Gui, Color, %Col%   
   
   XPrev := X
   YPrev := Y 
   WPrev := W
   HPrev := H  

   Gui, Show, x%X% y%Y% w%W% h%H% Hide
   Options := "0-0 " W "-0 " W "-" H " 0-" H " 0-0 " TH "-" TH
   . " " W-TH "-" TH " " W-TH "-" H-TH " " TH "-" H-TH " " TH "-" TH
   WinSet, Region, % Options       
   
   Gui, Show, NA   
}

объясните какой смысл тут в

 static XPrev, YPrev, HPrev  

иначе эти переменные как-то попадают под глобал ?
чё-то непонятно

23

Re: AHK: Как нарисовать рамку вокруг окна ?

Смысл такой же, как всегда - сохранять значения переменных между вызовами функции. Непонятна из данного кода обособленность переменной WPrev - по-моему, ее так же можно объявить внутри функции SetFrame как static

24

Re: AHK: Как нарисовать рамку вокруг окна ?

Irbis пишет:

Непонятна из данного кода обособленность переменной WPrev - по-моему, ее так же можно объявить внутри функции SetFrame как static

забил в статик и рамка не прорисовывается ))

25

Re: AHK: Как нарисовать рамку вокруг окна ?

У меня отображается рамка.

+ открыть спойлер

http://savepic.org/4082164.png

В примере поста #17 нет функции CheckWin(active_id) , вместо нее для проверки поставил "заглушку"


CheckWin(active_id)
{
   Return 1
}

26 (изменено: Hydrogenium, 2013-07-19 05:42:22)

Re: AHK: Как нарисовать рамку вокруг окна ?

Irbis пишет:

У меня отображается рамка.

+ открыть спойлер

http://savepic.org/4082164.png

В примере поста #17 нет функции CheckWin(active_id) , вместо нее для проверки поставил "заглушку"


CheckWin(active_id)
{
   Return 1
}

если переключиться на другое окно, и обратно, то рамка не будет рисоваться, без глобала никак


1) иногда окно полностью закрашивается цветом (ColorFrame := "Red")
подскажите из за чего может быть и как этого избежать ?

2) не могу понять смысл этой строчки

Gui, Show, x%X% y%Y% w%W% h%H% Hide

Gui скрывается тока в этих параметрах?, а почему сразу его не скрыть
хотя при коде: Gui, Hide, ничё не работает

3) SetWinDelay, 0
куда запихать ?
в SetFrame ?

27

Re: AHK: Как нарисовать рамку вокруг окна ?

up

28

Re: AHK: Как нарисовать рамку вокруг окна ?


SetFrame(Col, TH, X, Y, W, H)
{      
   static XPrev, YPrev, HPrev 
   
   global   
   
   if (Col = "") or (TH = "") or (X = "") or (Y = "") or (W = "") or (H = "") 
      Return 
   if (X = XPrev) and (Y = YPrev) and (W = WPrev) and (H = HPrev)
      Return        
 
   Gui, +LastFound +ToolWindow -Caption +AlwaysOnTop +Disabled    
   Gui, Color, %Col%   

....................................
}

при сравнении переменных

if (Col = "") 

тут разве не идёт присваивание ?
чё-то не догоняю

29

Re: AHK: Как нарисовать рамку вокруг окна ?

Нет, для присваивания нужно :=

30

Re: AHK: Как нарисовать рамку вокруг окна ?

YMP пишет:

Нет, для присваивания нужно :=

как же тогда понимать этот код ?


MyKey = F9

MyKey::   
    WinGet, active_id, ID, A 
    CoordMode, Mouse, Client        
    Click %x%, %y% 
Return

31

Re: AHK: Как нарисовать рамку вокруг окна ?

Обрати внимание на магическое слово if в приведенном двумя постами выше примере, возможно это подтолкнет твою мысль в нужном направлении.

+ открыть спойлер

if a=b
и
a=b - разные конструкции, сравнения и присваивания соответственно,
хоть и применяется в них одинаковый символ "="

32 (изменено: Hydrogenium, 2013-08-31 18:20:15)

Re: AHK: Как нарисовать рамку вокруг окна ?

Иногда окно может стань невидимым типа так:

+ открыть спойлер

http://firepic.org/images/2013-08/30/e042sk7d5npt.png

надо как-то рефрешить окно или хз как
т.е. не юзать Gui, Show, x%X% y%Y% w%W% h%H% Hide

подскажите как быть ?

33

Re: AHK: Как нарисовать рамку вокруг окна ?

подскажите как нарисовать альтернативно рамку без сокрытия области по середине ?

Gui, Show, x%X% y%Y% w%W% h%H% Hide

или надо создать 4 GUI или 4 компонента, и сделать в виде полосок и закрасить ?

+ открыть спойлер

http://f4.s.qip.ru/AUIOPQmH.png

34

Re: AHK: Как нарисовать рамку вокруг окна ?

Очередная покерная примочка в работе )

35 (изменено: serzh82saratov, 2013-09-11 23:36:10)

Re: AHK: Как нарисовать рамку вокруг окна ?

подскажите как нарисовать альтернативно рамку без сокрытия области по середине ?

Так вопрос же решён:


SetBatchLines -1
D := 9
Gui, +AlwaysOnTop +HWNDhGui -Caption +Toolwindow +E0x08000000 -DPIScale
Gui, Color, Red 
    
 
    
Loop {
    WinGetPos, X, Y, W, H, A 
    If X =
        Continue
    Region := 0 "-" 0 " " W "-" 0 " " W "-" H " " 0 "-" H " " 0 "-" 0 " "  
            . D "-" D " " W - D "-" D " " W - D "-" H - D " " D "-" H - D " " D "-" D   
    WinSet, Region, % Region, ahk_id %hGui%   
    Gui Show, NA x%X% y%Y% w%W% h%H%
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

36 (изменено: Hydrogenium, 2013-09-14 07:33:33)

Re: AHK: Как нарисовать рамку вокруг окна ?

serzh82saratov на Win 7 работает, а на Win XP ошибка

+ открыть спойлер

http://f4.s.qip.ru/FaNZtcpO.png

Убрал

-DPIScale

и стало норм.

Это не критично?

37

Re: AHK: Как нарисовать рамку вокруг окна ?

-DPIScale

Да это ладно, мне вот интересно в чём заключался вопрос.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

38 (изменено: Hydrogenium, 2013-09-14 07:33:09)

Re: AHK: Как нарисовать рамку вокруг окна ?

сделал так:

Gui, +AlwaysOnTop +HWNDhGui -Caption +Toolwindow +Disabled +LastFound  

Пока без глюков.

serzh82saratov, Спасиб за помощь.

39

Re: AHK: Как нарисовать рамку вокруг окна ?

Ekklesiast, ознакомьтесь с этой темой, отредактируйте свои посты. Надеюсь, больше замечаний делать не придётся.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

40 (изменено: Hydrogenium, 2013-09-14 07:32:50)

Re: AHK: Как нарисовать рамку вокруг окна ?

поправил

41

Re: AHK: Как нарисовать рамку вокруг окна ?

Ekklesiast забанен на три дня за нарушение Правил форума.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

42

Re: AHK: Как нарисовать рамку вокруг окна ?

teadrinker пишет:

Ekklesiast забанен на три дня за нарушение Правил форума.

Что именно я нарушил ?

43

Re: AHK: Как нарисовать рамку вокруг окна ?

Предложение начинается с большой буквы, кончается точкой. Что непонятного?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder