Ar ne itin erzina, kad, bent jau „Windows“, bet kuris langas gali pasirodyti bet kurioje ekrano vietoje? Ar tas kasdienis atsitiktinumas nervina ir norėtumėte geriau valdyti savo langų vietą ekrane? Na, dabar galite, dėka „AutoHotKey“.

Šiame vadove pamatysime, kaip galite išspręsti šią problemą naudodami AutoHotKey scenarijų. Pastatysime taip, kad judėtų bet koks langą į ekrano centrą paspaudus klavišą. Skamba mielai? Pažiūrėkime, kaip tai daroma!

Kaip nustatyti lango centravimo spartųjį klavišą naudojant „AutoHotKey“.

Pusė mūšio kuriant scenarijų yra sugalvoti, kaip jis veiks net neįvedant vieną simbolį. Taigi, sudarykime tokį veiksmų planą paprasta anglų kalba, kurį vėliau „mutuosime“ į scenarijų.

„Problema“ yra „Windows“.

„Windows“ (kaip „stačiakampiuose mūsų ekranuose“, o ne OS) paprastai pasirodo bet kurioje ekrano vietoje. Tai blaško dėmesį ir gali erzinti, kai tai kartojasi. Ypač kai susiduriama su keliais užklausytojais, atsirandančiais skirtingose ​​​​vietose, tikintis vartotojo įvesties.

instagram viewer

Problemos sprendimas

„AutoHotKey“ ne tik siunčia klavišų paspaudimus ir pelės paspaudimus į bet kurį langą, bet ir gali jais manipuliuoti. Anksčiau matėme, kaip galite naudokite „AutoHotKey“, kad prisegtumėte langus „visada viršuje“, naudodami spartųjį klavišą. Tačiau šį kartą pasinaudosime „AutoHotKey“ langų valdymo galimybėmis, kad:

  1. „Perskaitykite“ aktyvaus lango ID.
  2. Taip pat „perskaitykite“ jo matmenis (plotis ir aukštis).
  3. „Perskaitykite“ monitoriaus matmenis.
  4. Sujunkite monitoriaus ir lango matmenis, kad apskaičiuotumėte optimalias koordinates, kad minėtas langas būtų rodomas ekrano centre.
  5. Perkelkite langą į tas koordinates.

Galiausiai aukščiau pateiktą susiesime su nuoroda. Tokiu būdu galite jį pavadinti „pagal pareikalavimą“, o ne taikydami visi langai – tai gali trukdyti viso ekrano programoms ir žaidimams.

Atminkite, kad šioje pamokoje mes pasinersime į „AutoHotKey“. Jei to nesate susipažinę ir norite iš anksto sužinoti daugiau, peržiūrėkite mūsų greitas „AutoHotKey“ vadovas pradedantiesiems.

Pirma, greitojo klavišo nustatymas

Minėjome, kaip susiesime funkciją, kurią sukursime su nuoroda. Tačiau tikriausiai būtų geriau, jei pradėtume nuo šios dalies, kad ją pašalintume.

Pradėkite atsisiųsdami diegimo programą iš Oficiali „AutoHotKey“ svetainė. Pasirinkite „dabartinę“ versiją, o ne v2 beta versiją arba nebenaudojamą 1.0 versiją. Tada įdiekite jį savo kompiuteryje.

Paleiskite „File Explorer“ (greičiausias būdas yra „Windows“ klavišas + E) ir pereikite prie kelio, kuriame norite sukurti scenarijų. Įdiegę „AutoHotKey“, dešiniuoju pelės mygtuku spustelėjus meniu atsiras keletas naujų parinkčių. Taigi, dešiniuoju pelės mygtuku spustelėkite tuščią „File Explorer“ lango vietą ir pasirinkite Nauja > AutoHotKey Script.

Suteikite savo scenarijaus failui pavadinimą, tada dešiniuoju pelės mygtuku spustelėkite jį ir Redaguoti tai. Jei nenaudojate kodui pritaikytos teksto redagavimo programos, pvz., „Visual Studio Code“ ar „Notepad++“, naudokite „Windows Notepad“. Venkite redaktorių, tokių kaip „Wordpad“, kurie gali pridėti nenaudingą (tam tikslui) jūsų „kodo“ sintaksę.

Pasirinkę redagavimo priemonę pamatysite, kad jūsų AutoHotKey scenarijus jau turi keletą eilučių, iš anksto užpildytų viršuje. Jie yra dėl stabilumo ir suderinamumo priežasčių. Juos galima koreguoti, bet palikite juos tokius, kokie yra šioje mokymo programoje.

„Perkelkite“ dvi ar tris eilutes po jais ir įveskite nuorodą, kuri paleis jūsų funkciją. Galite sukurti klavišų kombinaciją naudodami „+“ klavišą „Shift“, „^“ – CTRL, „! „Alt“ ir „#“ – „Windows“ klavišui, taip pat bet koks „įprastas“ klaviatūros klavišas (raidės ir skaičiai).

Pavyzdžiui, norėdami, kad CTRL + Y derinys paleistų scenarijų, naudokite:

^y::

Dvigubas „:“ yra tarsi sakymas: „Ei, AutoHotKey, susiekite eilutę arba klavišų kombinaciją kairėje su viskuo, kas yra dešinėje“.

„Perkelkite“ dviem ar trimis eilutėmis žemiau paspausdami Enter ir įveskite „return“, kuris pažymės konkrečios funkcijos pabaigą. Visas rezultatas turėtų atrodyti taip:

^y::
; Tai yra komentarą.
grąžinti

„; Tai yra komentaras.“ eilutė yra būtent tai, scenarijaus „kode“ esantis komentaras, kurio „AutoHotKey“ nevykdys. Jis skirtas dokumentacijos tikslais, kad būtų pažymėta vieta, kur atlikdami šiuos veiksmus įvesime scenarijaus „kodą“.

Jei sekėte mūsų vadovą kurdami konkrečios programos sparčiuosius klavišus naudodami „AutoHotKey“. praeityje, šiuo atveju... nedaryk. Norite, kad lango centravimo spartusis klavišas būtų „visuotinis“, kad būtų centre bet koks langas iš bet koks programėlė. Jei „pririšite“ prie konkrečios programos, ji veiks tik šios programos languose.

Gaukite aktyvaus lango informaciją

Norime, kad mūsų spartusis klavišas veiktų aktyviame lange, o jo matmenys taip pat reikalingi mūsų skaičiavimams. Šią informaciją galime rasti naudodami šiuos duomenis:

„WinGetTitle“, „ActiveWindowTitle“, A
WinGetPos plotis, aukštis, %ActiveWindowTitle%

Pakeiskite komentaro eilutę, kurią pridėjome prie scenarijaus ankstesniame skyriuje, dviem aukščiau esančiomis eilutėmis. Rezultatas?

  • Pirmoje eilutėje paimamas aktyvaus lango pavadinimas.
  • Antroji eilutė nuskaito jos plotį ir aukštį ir susieja juos su žodžiais / kintamaisiais „Plotis“ ir „Aukštis“, kuriuos toliau naudosime savo skaičiavimams.

Gavome aktyvaus lango detales, bet mums taip pat reikia monitoriaus matomos srities matmenų, kad pasiektume savo tikslą. Laimei, juos rasti dar lengviau.

Ką apie pirminę monitoriaus sritį?

Mums nereikia papildomų komandų, kad surastume pagrindinio monitoriaus plotį ir aukštį. „AutoHotKey“ yra su dviem iš anksto nustatytais kintamaisiais, kuriuose jau yra ta informacija: „A_ScreenWidth“ ir „A_ScreenHeight“.

Taigi, kai juos pamatysite kitame skyriuje, juose jau „sudėtas“ pagrindinio monitoriaus plotis ir aukštis. Norint jiems priskirti teisingas reikšmes, nieko nereikia. Taigi, mes galime juos tiesiogiai naudoti savo skaičiavimuose.

Laikas apskaičiuoti tikslinę poziciją

Skaičiavimus galime įtraukti tiesiai į scenarijaus taškus, kur mums jų reikia. Vis dėlto lengviau ir geriau skaitome, jei susiejame juos su dviem kintamaisiais ir tada naudokite tuos kintamuosius mūsų scenarijuje.

Taigi, pasirinkkime „TargetX“ kaip kintamąjį, kuris laikys horizontalias koordinates, o „TargetY“ kaip vienas su vertikaliomis koordinatėmis, kur turėtume perkelti langą, kad jis būtų rodomas centre ekranas.

TargetX := (A_ScreenWidth/2)-(Plotis/2); Čia mes apskaičiuojame horizontalią langas taikinys...
TargetY := (A_ScreenHeight/2)-(Height/2); ...o čia vertikalioji.

Iššifruokime šias eilutes paprasta anglų kalba:

  • „TargetX“ ir „TargetY“ yra du kintamieji.
  • ":=" informuoja AutoHotKey, kad kintamieji turėtų būti lygūs skaičiavimų rezultatams dešinėje ir kad tie rezultatai turėtų būti traktuojami kaip skaičiai.
  • „(A_ScreenWidth/2)“ padalija visą monitoriaus plotį iš dviejų.
  • „(Plotis/2)“ atlieka tą patį aktyvaus lango pločiui.

Atsižvelgdami į tai, kas išdėstyta aukščiau, pusę aktyvaus lango pločio atimame iš pusės ekrano pločio. Liko vietos kairėje lango pusėje – nuo ​​kairiosios ekrano pusės iki vietos, kur turėtų pasirodyti langas. Antroji eilutė daro tą patį, bet dėl ​​aukščio.

Dabar pakeiskite lango padėtį

Turėdami visagalias žinias, įgytas iš mistinių komandų, kurias matėme aukščiau, dabar galime sukurti savo magišką užkeikimą, kuris užbaigs lango teleportacijos ritualą. Arba paprasta anglų kalba, norėdami perkelti langus ekrane, naudokite „AutoHotKey“ komandą „WinMove“.

„WinMove“ tikisi, kad mes jį „pateiksime“ bent trimis informacijos dalimis, kad atliktume savo veiksmą: tikslinio lango pavadinimu ir koordinatėmis, kur jį perkelti. Kadangi mes jau susiejome šias informacijos dalis su kintamaisiais, komanda yra tokia paprasta:

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%

Aukščiau:

  • „WinMove“ yra „AutoHotKey“ komanda, kuri perkelia langą.
  • „%ActiveWindowTitle%“ yra kintamasis, kuriame susietas aktyvaus lango pavadinimas.
  • „%TargetX%“ ir „%TargetY%“ yra horizontalios ir vertikalios koordinatės, kur reikia perkelti langą.

Taip pat galite pakeisti langų dydį naudodami „WinMove“, praleisti tuos, kurių pavadinimuose ar turinyje yra tam tikrų teksto įdubimų ir pan. Kadangi šios funkcijos nepatenka į šio straipsnio taikymo sritį, patikrinkite „AutoHotKey“ oficiali dokumentacija apie komandą „WinMove“. daugiau apie juos.

Galutinis scenarijus

Galiausiai pasiekiame sunkiausią mūsų kelionės dalį. Pasiruoškite kitam žingsniui, tikimasi, kad išsaugosite scenarijų ir... Paleiskite tai.

Taip, tai buvo viskas – scenarijus baigtas ir nėra nieko daugiau, kaip jį išbandyti. Naudokite savo apibrėžtą nuorodą ir bet kuris aktyvus langas bus perkeltas į ekrano centrą.

Galutinis scenarijaus failas, atidarytas teksto rengyklėje, turėtų atrodyti maždaug taip:

#NoEnv; Rekomenduojama dėl našumo ir suderinamumo su būsimais AutoHotkey leidimais.
; #Įspėti; Įgalinkite įspėjimus, kad padėtų aptikti įprastas klaidas.
SendMode įvestis; Rekomenduojamas dėlnaujas scenarijus dėl didelio greičio ir patikimumo.
SetWorkingDir %A_ScriptDir%; Užtikrina nuoseklų pradžios katalogą.
^y::
„WinGetTitle“, „ActiveWindowTitle“, A; Gaukite aktyvų langą's titulas už "taikymas" tai / tai veikia.
WinGetPos plotis, aukštis, %ActiveWindowTitle%; Būkite aktyvūs langaspadėtis, naudojama dėl mūsų skaičiavimai.
TargetX := (A_ScreenWidth/2)-(Plotis/2); Apskaičiuokite horizontalų tikslą, kur mes perkelsime langas.
TargetY := (A_ScreenHeight/2)-(Augtis/2); Apskaičiuokite vertikalią vietą apie į langas.

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Perkelkite langas į apskaičiuotas koordinates.

grąžinti

Atkreipkite dėmesį, kad galite nukopijuoti aukščiau pateiktą scenarijų, įklijuoti jį į Notepad ar panašią teksto rengyklę ir išsaugoti naudodami AHK plėtinį. Tada „paleiskite“ jį su įdiegtu „AutoHotKey“, kad centruotų bet kurį langą, kai paspausite CTRL + Y. Jei jums nepatinka šis spartusis klavišas, pakeiskite eilutę „^y::“ į kitą klavišų kombinaciją. Pavyzdžiui, !+c:: funkcija susietų su Shift + Alt + C klavišų kombinacija.

Papildomas takelis

Jūsų patogumui nusprendėme sukurti ir įtraukti antrinį scenarijų, kuris bus naudingas tiems, kurie turi du monitorius.

Kad šis straipsnis būtų supaprastintas, komentarų forma įtraukėme informaciją apie tai, kaip veikia scenarijus. Galite juos pašalinti iš iteracijos.

Trumpa istorija, kuo ji skiriasi nuo aukščiau pateikto scenarijaus, yra ta, kad taip pat pridedame PositionToggle kintamąjį ir tam tikrą „IF logiką“. Tada juos naudojame langui tarp monitorių „brūkštelėti“. Turėtume pažymėti, kad tai neelegantiškas ir „nulaužtas“ problemos sprendimas. Tačiau mes pirmenybę teikėme jam, o ne supaprastintam kodui, nes šį metodą lengviau suprasti ir pritaikyti visiems, kurie nėra susipažinę su „AutoHotKey“.

#NoEnv; Rekomenduojama dėl našumo ir suderinamumo su būsimais AutoHotkey leidimais.
; #Įspėti; Įgalinkite įspėjimus, kad padėtų aptikti įprastas klaidas.
SendMode įvestis; Rekomenduojamas dėlnaujas scenarijus dėl didelio greičio ir patikimumo.
SetWorkingDir %A_ScriptDir%; Užtikrina nuoseklų pradžios katalogą.
PositionToggle = 1; Naudokite a numerįkaip jungiklis dėl žymėjimas įjungta kurios stebi langas turėtų pasirodyti.
^y::
„WinGetTitle“, „ActiveWindowTitle“, A
WinGetPos plotis, aukštis, %ActiveWindowTitle%

Jei PositionToggle = 1; Patikrinti jungiklio būsena ir "daryti kas yra tarp garbanotų skliaustų“, jei taip rinkinysį1dėl mūsų pagrindinis monitorius.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Height/2)
PositionToggle = 2; "Brūkštelėjimas" jungiklį, kad jei dar kartą naudosime spartųjį klavišą, mūsų aktyvus langas persikels į antrą monitorių.
}
Kitu atveju, jei PositionToggle = 2; Ar anksčiau naudojome sparčiąjį klavišą, "brūkštelėjimas" antrojo monitoriaus perjungimo numeris? Tada scenarijus turėtų daryti ką's tarp toliau pateiktų garbanotų skliaustų, o ne aukščiau.
{
SysGet, Mon2, Monitorius, 2; Gaukite antrą monitorių's detales
Mon2Width := Mon2Right - Mon2Left; Apskaičiuokite antrąjį monitorių's tikrasis plotis.
Mon2Height := Mon2Bottom - Mon2Top; Apskaičiuokite antrąjį monitorių'tikrojo aukščio.

TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Apskaičiuokite, kur perkelti langą. Atkreipkite dėmesį, kad pridedame ir pagrindinį monitorių's plotis, nes „AutoHotKey“ gali'nejudinkite langų atskiruose monitoriuose, bet kartu "paviršius".
Tikslas := (pirmadienis2 aukštis/2)-(aukštis/2)+pirmadienis viršus; Apskaičiuokite optimalų vertikalų tikslą perkelti langą antrame monitoriuje. Kaip ir aukščiau, antrasis monitorius's vertikalios detalės aptinkamos pagrindinio monitoriaus atžvilgiu. Taigi, turime būti kūrybingi, kad gautume optimalų tikslą, pripažindami, kaip antrasis monitorius's viršaus nėra't lygus 0 (kaip ir pirminis's).

PositionToggle = 1; Brūkštelėkite jungiklį atgal, kad jeigu mes pakartotinai naudojame greitąjį klavišą langas grįš į pagrindinį monitorių.
}

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Faktinis veiksmas, judantis aktyvus langas į mūsų apskaičiuotas koordinates.

grąžinti

Centruokite langą su raktu – paprastas būdas

Ir dabar viskas! Jei viskas veikia gerai, dabar galite naudoti naujai nustatytą spartųjį klavišą langui centruoti bet kada.

Raskite, kur švaistote laiką sistemoje „Windows“, naudodami „AutoHotKey“.

Skaitykite toliau

DalintisTviteryjeDalintisEl. paštas

Susijusios temos

  • Windows
  • Windows 10
  • Windows 11
  • AutoHotkey
  • „Windows“ tinkinimas

Apie autorių

Odisėjas Kourafalosas (31 straipsnis paskelbtas)

Tikrasis OK gyvenimas prasidėjo maždaug 10 metų, kai jis gavo pirmąjį kompiuterį – Commodore 128. Nuo tada jis tirpdo klavišų dangtelius rašydamas 24 valandas per parą, 7 dienas per savaitę, bandydamas paskleisti „The Word Of Tech“ visiems, kurie pakankamai domisi, kad galėtų klausytis. Arba, tiksliau, skaitykite.

Daugiau iš Odysseas Kourafalos

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia