1

Тема: AHK: Добавить кнопки Cвернуть, Развернуть, Закрыть

Здравствуйте. Есть программа которая запускается в окне которое невозможно свернуть или закрыть. Свернуть и выйти можно или сочетанием клавиш или в меню программы.
При этом программа сама подстраивается под разрешение экрана.
Помимо того что программа должна быть запущена хотелось бы иметь доступ к рабочему столу.
Можно ли как то вписать окно программы в родительское окно которое имело бы кнопки сворачивания на панель задач.
И можно ли запустить программу в окне определенного разрешения. Перерыл весь форум ничего подходящего не смог найти.
Конструкции WinMove  не подходят. они просто сдвигают программу.
Может кто решал такие задачи. буду раз любым идеям.

2

Re: AHK: Добавить кнопки Cвернуть, Развернуть, Закрыть

Может, WinMinimize?

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

3

Re: AHK: Добавить кнопки Cвернуть, Развернуть, Закрыть

teadrinker
Через него и делал
Но. как то стабильности не наблюдаю. плюс хотелось бы все таки видеть панель задач. И не занимать клавишу (хотя тут можно попробовать наведением мышки сворачивать.)
Сейчас вот такой код. Может кто что подскажет еще.

Tab::     ; tab - свернуть окно (ДВОЙНОЕ нажатие - развернуть)
    If Count_Presses > 0 ; если таймер уже запущен, то...
    {
        Count_Presses += 1 ; плюсуем каждое нажатие клавиши (число будет обрабатываться в подпрограмме соответствующего таймера)
        Return ; закончить обработку горячей клавиши (ее дальнейшую обработку уже определяет таймер и его подпрограмма)
    }
    ; иначе - это первое нажатие из новой серии
    Count_Presses = 1 ; выставляем флаг, что клавиша один раз нажата
    SetTimer, Timer_Presses_1, 300 ; переходить к указанной подпрограмме через каждые 300 миллисекунд
Return ; закончить обработку горячей клавиши
Timer_Presses_1: ; подпрограмма действий в зависимости от количества нажатий
    SetTimer, Timer_Presses_1, off ; выключить таймер
    If Count_Presses = 1 ; если клавиша нажата однажды...
   WinMinimize, MiniRMK ; свернуть окно
       If Count_Presses = 2 ; если клавиша нажата дважды...
           WinRestore, MiniRMK ; восстановить свернутое окно 
           WinSet, AlwaysOnTop, On, MiniRMK ; восстановить свернутое окно  поверх всех
    Count_Presses = 0 ; сбросить счет и подготовится к следующему ряду нажатий
Return ; закончить обработку горячей клавиши

4

Re: AHK: Добавить кнопки Cвернуть, Развернуть, Закрыть

serg_silver

Вот способ поместить в своё Gui походу любое окно, даже рабочий стол.
Активируем нужное окно, нажимаем F2.

;[serzh82saratov]	http://forum.script-coding.com/viewtopic.php?pid=142394#p142394
F2::
WinExist("A")
WinSet, Style, -0x00C00000			; WS_CAPTION
WinSet, Style, -0x00040000			; WS_SIZEBOX
;WinSet, Region, 860-121 W340 H600
Gui, +HWNDhGui +Resize
Gui, Color, 123456
Gui, Show, w400 h600
DllCall("SetParent", "Ptr", WinExist(), "Ptr", hGui)
WinMove 0, 0
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

5 (изменено: teadrinker, 2020-11-06 21:53:19)

Re: AHK: Добавить кнопки Cвернуть, Развернуть, Закрыть

Лучше так:

SetBatchLines, -1

F2::
InsertWindowIntoMyGui() {
   static styles := (WS_CAPTION := 0x00C00000) | (WS_SIZEBOX := 0x00040000)
   Gui, New, +Resize +hwndhGui
   hWnd := WinExist("A")
   WinSet, Style, % "-" . styles
   DllCall("SetParent", "Ptr", hWnd, "Ptr", hGui)
   WinMove,,, 0, 0, 600, 400
   Gui, Show, w600 h400
}

GuiSize() {
   WinGet, controlList, ControlListHwnd, ahk_id %A_Gui%
   hChild := RegExReplace(controlList, "s)\R.+")
   WinMove, ahk_id %hChild%,, 0, 0, A_GuiWidth, A_GuiHeight
}

GuiClose() {
   WinGet, controlList, ControlListHwnd, ahk_id %A_Gui%
   hChild := RegExReplace(controlList, "s)\R.+")
   WinClose, ahk_id %hChild%
   Gui, Destroy
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Добавить кнопки Cвернуть, Развернуть, Закрыть

teadrinker
Очень интересное решение. А можно как то чтобы код выполнялся для определенного приложения.
Т.е. при нажатии клавиши запускалось бы конкретное приложение и это приложение вписывалось бы в это GUI. Покрутил сам что то не могу понять как это сделать. С Gui только знакомлюсь.

7

Re: AHK: Добавить кнопки Cвернуть, Развернуть, Закрыть

serg_silver

Можно. Необходимо его запустить, дождаться появления и вписать кодом выше.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

8

Re: AHK: Добавить кнопки Cвернуть, Развернуть, Закрыть

serg_silver пишет:

Покрутил сам что то не могу понять как это сделать

Смотрите команды Run и WinWait.

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