PDA

Показать полную графическую версию : Как расставить окна "сеткой"?


mishalenin
03-05-2016, 14:56
Создал простой скрипт для расстановки окон сеткой,

Opt("WinTitleMatchMode",2)


$hList = WinList("[Title:Table]")
WinMove ($hList[1][1], "", 2720,600,800,566)
WinMove ($hList[2][1], "", 2720,0,800,566)
WinMove ($hList[3][1], "", 1920,0,800,566)
WinMove ($hList[4][1], "", 1920,600,800,566)
WinMove ($hList[5][1], "", 1120,600,800,566)
WinMove ($hList[6][1], "", 1120,0,800,566)
WinMove ($hList[7][1], "", 320,0,800,566)
WinMove ($hList[8][1], "", 320,600,800,566)

если окон нет, то мне выдает ошибку


http://smages.com/images/43lgl.jpg

если есть 1 окно он его ставит в нужную позицию, но выдает опять ту же ошибку, только ругаясь уже WinMove ($hList[2][1], "", 2720,0,800,566), либо выше, когда открыто 8 окон и запускаешь скрипт, все окна встаю по позициям, ошибок нет.

Ещё бы хотелось все это автоматизировать. при появлении первого окна перемещает его в первую позицию, дальше ждет 2 е окно, при появлении 2 го ставит во вторую и т.д. так 8 окон.

>>>> Window <<<<
Title:Table
Class: #32770
Position: 1920, 0
Size: 800, 566
Style: 0x940B0044
ExStyle: 0x00010010
Handle: 0x0000000000091304

все параметры кроме Handle постоянные.

mishalenin
03-05-2016, 16:01
Сделал вот так:
Opt("WinTitleMatchMode",2)

$hList = WinList("[Title:Table]")
Func _win()
If $hList[0][0] < 1 Then WinWait ($hList[0][0])
If $hList[0][0] >= 1 Then WinMove ($hList[1][1], "", 2720,600,800,566)
If $hList[0][0] >= 2 Then WinMove ($hList[2][1], "", 2720,0,800,566)
If $hList[0][0] >= 3 Then WinMove ($hList[3][1], "", 1920,0,800,566)
If $hList[0][0] >= 4 Then WinMove ($hList[4][1], "", 1920,600,800,566)
If $hList[0][0] >= 5 Then WinMove ($hList[5][1], "", 1120,600,800,566)
If $hList[0][0] >= 6 Then WinMove ($hList[6][1], "", 1120,0,800,566)
If $hList[0][0] >= 7 Then WinMove ($hList[7][1], "", 320,0,800,566)
If $hList[0][0] >= 8 Then WinMove ($hList[8][1], "", 320,600,800,566)
EndFunc
While 1
_win()
sleep (1000)
WEnd
ошибки пропали, все какие окна открыты расставляет, но новые окна которые открываются не трогает.

Iska
03-05-2016, 17:48
но новые окна которые открываются не трогает. »
Естественно. Вы ведь запрашиваете перечень окон один раз до входа в бесконечный цикл.

mishalenin
03-05-2016, 19:02
Iska, спасибо, помогло, но сейчас новая проблема, окна перетасовываются (((

Iska
03-05-2016, 19:17
но сейчас новая проблема, окна перетасовываются ((( »
Попробуйте предварительно сортировать их, например, по хэндлу. Но мне сам Ваш подход с постоянным ежесекундным перемещением окон не нравится.

mishalenin
04-05-2016, 10:32
Можно на примере хотя бы, на паре моих окн, я ещё совсем нуб! Спасибо огромное!

Iska
04-05-2016, 13:04
Можно на примере хотя бы, на паре моих окн, »
Нельзя. У меня нет Ваших окон. И, как я написал выше — мне не нравится сам данный подход.

mishalenin
04-05-2016, 18:58
Ок, спасибо за помощь.




© OSzone.net 2001-2012