Próbuję napisać kilka prostych skryptów AutoHotkey do przenoszenia okien i mam problemy z uzyskaniem prawidłowych wartości rozmiaru ekranu.Uzyskiwanie dostępnego obszaru ekranu w trybie autouruchamiania
Próbuję uzyskać rozmiar użytecznego obszaru na ekranie (zazwyczaj pełna rozdzielczość ekranu minus pasek zadań, a może dowolne inne zadokowane okna, takie jak pasek boczny w systemie Vista). Żadna z metod, które znalazłem dla uzyskania szerokości ekranu, nie działa.
Żadna z 3 metod, które znalazłem, aby uzyskać rozmiar ekranu, nie daje mi odpowiednich wartości. Oto skrypt testu używam (działa na XP z paska zadań na dole przy domyślnym rozmiarze):
#7::
WinMove A,,0,0,A_ScreenWidth,A_ScreenHeight
return
#8::
;SM_CXMAXIMIZED and SM_CYMAXIMIZED
SysGet, ScreenWidth, 61
SysGet, ScreenHeight, 62
WinMove A,,0,0,ScreenWidth,ScreenHeight
return
#9::
;SM_CXFULLSCREEN and SM_CYFULLSCREEN
SysGet, ScreenWidth, 16
SysGet, ScreenHeight, 17
WinMove A,,0,0,ScreenWidth,ScreenHeight
return
# 7 powoduje, że okno do podjęcia pełnej rozdzielczości, więc zachodzi na pasek zadań.
# 8 powoduje, że szerokość jest większa niż rozdzielczość (widzę prawą krawędź okna na drugim monitorze), a wysokość jest nieco za duża, więc okno częściowo zachodzi na obszar paska zadań. Wygląda na to, że jest to poprawne, z wyjątkiem nieuwzględniania dekoracji okien na krawędziach.
# 9 wydaje się mieć prawidłową szerokość, ale wysokość jest za krótka. Wygląda na to, że odejmuje ona wysokość paska zadań od wysokości rozdzielczości, ale odejmuje od niej kolejne 30 pikseli.
Mogę po prostu użyć tego, co mam w # 9 i dodać 30 do wysokości, którą otrzymuję, ale to wydaje się zbyt podobne do hackowania, które może przerwać w innych konfiguracjach. Wygląda na to, że musi istnieć sposób na uzyskanie odpowiedniego rozmiaru ekranu, ale nie mogę go znaleźć w AutoHotkey.
Dla porównania, to wydaje się dać mi to czego potrzebuję w Javie:
Toolkit.getDefaultToolkit().getScreenSize();
Funkcje te są bardzo przydatne. Po prostu użyłem ich pod Windows 7 i działają pięknie. Dzięki. Twoje zdrowie! –