1

Тема: AHK: Вырез части окна по данным из txt файла

Здравствуйте.
Помогите поправить скрипт.

Скрипт autohotkey вырезает область из конкретного окна и оформляет его как gui.

WinExist("ahk_class TMainForm") 
WinSet, Style, -0x00C00000			; WS_CAPTION
WinSet, Style, -0x00040000			; WS_SIZEBOX
WinSet, Style, +0x80000000			; WS_POPUP
WinSet, Region, 860-121 W350 H550
Gui, +HWNDhGui
Gui, Color, 123456
Gui, Show, w350 h550  
DllCall("SetParent", "Ptr", WinExist(), "Ptr", hGui)
WinMove -860, -121
Return

За координаты и ширину-высоту вырезаемой области отвечает вот этот кусок:
WinSet, Region, 860-121 W350 H550
Как изменить скрипт чтобы он брал параметры координат-ширины-высоты вырезаемой области из txt или ini файла - как процент от размеров окна ?
WinSet, Region, ШиринаОкна*0,51-ВысотаОкна*0,48 W(ШиринаОкна*0,36) H*(ВысотаОкна*0,43)

2 (изменено: __Михаил__, 2021-02-23 16:34:07)

Re: AHK: Вырез части окна по данным из txt файла

Извлечь данные из файла настроек, затем вставить в код их как выражение, проблем быть не должно.

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

3

Re: AHK: Вырез части окна по данным из txt файла

Set := SubStr(A_ScriptName, 1, -4) . ".ini"
OnExit, Exit

;Чтение настроек:
IniRead, X, % Set, Win, X, 860
IniRead, Y, % Set, Win, Y, 121
IniRead, W, % Set, Win, W, 350
IniRead, H, % Set, Win, H, 550
IniRead, Color, % Set, Win, Color, 123456
IniRead, XM, % Set, Win, XM, -860
IniRead, YM, % Set, Win, YM, -121
IniRead, GW, % Set, Win, GW, 350
IniRead, GH, % Set, Win, GH, 550



F3::
WinExist("ahk_class TMainForm")
WinSet, Style, -0x00C00000			; WS_CAPTION
WinSet, Style, -0x00040000			; WS_SIZEBOX
WinSet, Style, +0x80000000			; WS_POPUP

WinSet, Region, % X "-" Y " W" W " H" H		; 860-121 W350 H550

Gui, +HWNDhGui
Gui, Color, % Color
Gui, Show, % "w" GW " h" GH		; w350 h550
DllCall("SetParent", "Ptr", WinExist(), "Ptr", hGui)
WinMove, % XM, % YM			; -860, -121
Return


Exit:	; Сохранить при выходе файл настроек.
IniWrite, % X, % Set, Win, X
IniWrite, % Y, % Set, Win, Y
IniWrite, % W, % Set, Win, W
IniWrite, % H, % Set, Win, H
IniWrite, % Color, % Set, Win, Color
IniWrite, % XM, % Set, Win, XM
IniWrite, % YM, % Set, Win, YM
IniWrite, % GW, % Set, Win, GW
IniWrite, % GH, % Set, Win, GH
ExitApp
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

4

Re: AHK: Вырез части окна по данным из txt файла

__Михаил__, спасибо за ответ.
Я запустил этот скрипт, но почему-то он не работает.

Запускаю эксель, нажимаю F3 - создается gui, заполненное однотонным синим цветом.

5

Re: AHK: Вырез части окна по данным из txt файла

Возможно окно не верно указано, взял данные из шапки.
Можно заменить на текущее окно так:

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

6

Re: AHK: Вырез части окна по данным из txt файла

__Михаил__, спасибо.
но пока скрипт не работает.
Он создает пустое окно, заполненное синим цветом.
Программа называется эксель.

И я спрашивал про вырезание области - заданной процентами от размеров основного окна:  WinSet, Region, ШиринаОкна*0,51-ВысотаОкна*0,48 W(ШиринаОкна*0,36) H*(ВысотаОкна*0,43)

А в ini - сейчас просто выписываются размеры вырезаемой области.

7

Re: AHK: Вырез части окна по данным из txt файла

Пример не учитывает проценты, это уже сами добавьте. Задача была показать как все данные хранить и загружать из файла настроек. Экспериментируйте.

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