Vai tas nav īpaši kaitinoši, ka vismaz operētājsistēmā Windows jebkurš logs var parādīties jebkurā ekrāna vietā? Vai šī ikdienas nejaušība krīt uz nerviem, un jūs vēlētos vairāk kontrolēt savu logu izvietojumu ekrānā? Tagad jūs varat, pateicoties AutoHotKey.

Šajā apmācībā mēs redzēsim, kā jūs varat atrisināt šo problēmu, izmantojot AutoHotKey skriptu. Mēs to uzcelsim tā, lai tas kustētos jebkura logu uz ekrāna centru, nospiežot taustiņu. Izklausās saldi? Paskatīsimies, kā tas paveikts!

Kā iestatīt logu centrēšanas karsto taustiņu, izmantojot AutoHotKey

Veidojot skriptu, puse no panākumiem ir izdomāt, kā tas darbosies, pirms pat jāieraksta viena rakstzīme. Tātad, izveidosim tādu rīcības plānu vienkāršā angļu valodā, kas pēc tam "pārveidosies" par skriptu.

"Problēma" ir Windows

Windows (tāpat kā "taisnstūra elementos mūsu ekrānos", nevis OS) mēdz parādīties jebkurā ekrāna vietā. Tas novērš uzmanību, un tas var būt arī kaitinoši, ja tas notiek atkārtoti. It īpaši, ja ir darīšana ar vairākiem pieprasītājiem, kas parādās dažādās vietās, sagaidot lietotāja ieguldījumu.

Problēmas risinājums

Papildus taustiņsitienu un peles klikšķu nosūtīšanai uz jebkuru logu, AutoHotKey var arī ar tiem manipulēt. Mēs agrāk redzējām, kā jūs varat izmantojiet AutoHotKey, lai piespraustu logus "vienmēr augšpusē", izmantojot īsinājumtaustiņus. Tomēr šoreiz mēs izmantosim AutoHotKey logu manipulācijas iespējas, lai:

  1. "Izlasi" aktīvā loga ID.
  2. "Izlasi" arī tā izmērus (platums un augstums).
  3. "Izlasiet" monitora izmērus.
  4. Apvienojiet monitora un loga izmērus, lai aprēķinātu optimālās koordinātas minētā loga attēlošanai ekrāna centrā.
  5. Pārvietojiet logu uz šīm koordinātām.

Visbeidzot, mēs kartēsim iepriekš minēto ar saīsni. Tādā veidā jūs varat to saukt par "pēc pieprasījuma", nevis lietot to visi logi, kas var traucēt pilnekrāna lietotņu un spēļu darbību.

Ņemiet vērā, ka šajā apmācībā mēs apskatīsim AutoHotKey. Ja jūs to nezināt un vēlaties uzzināt vairāk iepriekš, pārbaudiet mūsu ātrs AutoHotKey ceļvedis iesācējiem.

Pirmkārt, karstā taustiņa iestatīšana

Mēs minējām, kā mēs izveidosim funkciju, kas tiks izveidota ar saīsni. Tomēr, iespējams, ir labāk, ja mēs sākam ar šo daļu, lai to novērstu.

Sāciet, lejupielādējot instalēšanas programmu no AutoHotKey oficiālā vietne. Izvēlieties "pašreizējo" versiju, nevis v2 beta vai novecojušo versiju 1.0. Pēc tam instalējiet to savā datorā.

Palaidiet File Explorer (ātrākais veids ir ar Windows Key + E taustiņu kombināciju) un pārejiet uz ceļu, kurā vēlaties izveidot skriptu. Ja ir instalēts AutoHotKey, labās pogas izvēlnē tiks parādītas dažas jaunas opcijas. Tātad, ar peles labo pogu noklikšķiniet uz File Explorer loga tukšās vietas un izvēlieties Jauns > AutoHotKey skripts.

Piešķiriet skripta failam nosaukumu un pēc tam ar peles labo pogu noklikšķiniet uz tā un rediģēt to. Ja neizmantojat kodam draudzīgu teksta rediģēšanas lietotni, piemēram, Visual Studio Code vai Notepad++, izmantojiet Windows Notepad. Izvairieties no redaktoriem, piemēram, Wordpad, kas jūsu "kodam" var pievienot bezjēdzīgu (mērķim) sintaksi.

Atrodoties izvēlētajā redaktorā, jūs redzēsit, ka jūsu AutoHotKey skripta augšdaļā jau ir iepriekš aizpildītas rindas. Tie ir pieejami stabilitātes un saderības apsvērumu dēļ. Tie ir pielāgojami, taču atstājiet tos tādus, kādi tie ir šajā apmācībā.

"Pārvietojiet" divas vai trīs rindiņas zem tām un ievadiet saīsni, kas palaidīs jūsu funkciju. Varat izveidot taustiņu kombināciju, izmantojot "+" taustiņu Shift, "^" taustiņu CTRL, "!" Alt un "#" Windows taustiņam, kā arī jebkuram "parastajam" tastatūras taustiņam (burtiem un cipariem).

Piemēram, lai skriptu palaistu kombinācija CTRL + Y, izmantojiet:

^y::

Dubultā ":" ir kā teikt: "Hei, AutoHotKey, lūdzu, kartējiet virkni vai taustiņu kombināciju kreisajā pusē ar visu, kas atrodas labajā pusē".

"Pārvietojiet" divas vai trīs rindiņas zemāk, nospiežot taustiņu Enter, un ierakstiet "return", kas iezīmēs konkrētās funkcijas beigas. Pilnīgajam rezultātam vajadzētu izskatīties šādi:

^y::
; Šis ir komentāru.
atgriezties

"; Šis ir komentārs." Rinda ir tieši tā, komentārs skripta "kodā", kuru AutoHotKey neizpildīs. Tas ir paredzēts dokumentācijas nolūkos, lai atzīmētu vietu, kur turpmākajās darbībās ievadīsim skripta "kodu".

Ja esat ievērojis mūsu ceļvedi izveidot lietotnei specifiskus karstos taustiņus, izmantojot AutoHotKey pagātnē, šajā gadījumā... nevajag. Jūs vēlaties, lai jūsu logu centrēšanas karstais taustiņš būtu "globāls", lai centrētu jebkura logs no jebkura lietotne. Ja jūs to piesaistīsit noteiktai lietotnei, tā darbosies tikai šīs lietotnes logos.

Iegūstiet informāciju par aktīvā logu

Mēs vēlamies, lai mūsu saīsne iedarbotos uz aktīvo logu, un mums ir nepieciešami arī tā izmēri mūsu aprēķiniem. Mēs varam atrast šo informāciju, izmantojot tālāk norādīto informāciju.

WinGetTitle, ActiveWindowTitle, A
WinGetPos platums, augstums, %ActiveWindowTitle%

Aizstāt komentāra rindiņu, ko esam pievienojuši skriptam iepriekšējā sadaļā, ar divām iepriekš minētajām rindām. Rezultāts?

  • Pirmajā rindā tiek uztverts aktīvā loga nosaukums.
  • Otrā rindiņa nolasa tā platumu un augstumu un samēro tos ar vārdiem/mainīgajiem lielumiem "Platums" un "Augstums", ko izmantosim tālāk savos aprēķinos.

Mēs ieguvām aktīvā loga detaļas, taču mums ir nepieciešami arī monitora redzamā laukuma izmēri, lai sasniegtu savu mērķi. Par laimi, tos noskaidrot ir vēl vieglāk.

Kā ir ar primārā monitora zonu?

Mums nav vajadzīgas papildu komandas, lai noteiktu mūsu galvenā monitora platumu un augstumu. AutoHotKey ir divi iepriekš iestatīti mainīgie, kas jau satur šo informāciju: "A_ScreenWidth" un "A_ScreenHeight".

Tātad, kad tos redzat nākamajā sadaļā, tie jau "satur" primārā monitora platumu un augstumu. Nav nekā nepieciešams, lai tiem piešķirtu pareizās vērtības. Tādējādi mēs varam tos izmantot tieši savos aprēķinos.

Laiks aprēķināt mērķa pozīciju

Mēs varam iekļaut aprēķinus tieši skripta punktos, kur tie ir nepieciešami. Tomēr tas ir vieglāk un labāk lasāms, ja tos kartējam ar diviem mainīgajiem un tad izmantojiet šos mainīgos mūsu skriptā.

Tātad, pieņemsim “TargetX” kā mainīgo, kam būs horizontālās koordinātas, un “TargetY” kā mainīgo. vienu ar vertikālajām koordinātām, kur mums vajadzētu pārvietot logu, lai tas parādītos loga centrā ekrāns.

TargetX := (A_ScreenWidth/2)-(Platums/2); Šeit mēs aprēķinām horizontālo logs mērķis...
TargetY := (A_ScreenHeight/2)-(Height/2); ...un te vertikālais.

Atšifrēsim šīs rindas vienkāršā angļu valodā:

  • "TargetX" un "TargetY" ir divi mainīgie.
  • ":=" informē AutoHotKey, ka mainīgajiem ir jābūt vienādiem ar labajā pusē esošo aprēķinu rezultātiem un ka šie rezultāti ir jāuzskata par skaitļiem.
  • "(A_ScreenWidth/2)" dala visu monitora platumu ar diviem.
  • "(Platums/2)" dara to pašu aktīvā loga platumam.

Izmantojot iepriekš minēto, mēs atņemam pusi aktīvā loga platuma no puses ekrāna platuma. Atlikušais laukums ir pa kreisi no loga — no ekrāna kreisās puses līdz vietai, kur jāparādās logam. Otrā rinda dara to pašu, bet tikai attiecībā uz augstumu.

Tagad mainiet loga novietojumu

Aprīkoti ar visvarenajām zināšanām, kas iegūtas no mistiskajām komandām, kuras redzējām iepriekš, tagad mēs varam izveidot savu burvju burvestību, kas pabeigs loga teleportācijas rituālu. Vai arī vienkāršā angļu valodā izmantojiet AutoHotKey komandu "WinMove", lai pārvietotu logus pa ekrānu.

WinMove sagaida, ka mēs to "pabarosim" ar vismaz trim informācijas daļām, lai veiktu savu darbību: mērķa loga nosaukumu un koordinātām, kur to pārvietot. Tā kā mēs jau esam kartējuši šīs informācijas daļas ar mainīgajiem, komanda ir tikpat vienkārša kā:

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

Iepriekš minētajā:

  • "WinMove" ir AutoHotKey komanda, kas pārvieto logu.
  • "%ActiveWindowTitle%" ir mainīgais, kurā tiek kartēts aktīvā loga nosaukums.
  • "%TargetX%" un "%TargetY%" ir horizontālās un vertikālās koordinātas, kur pārvietot logu.

Varat arī mainīt logu izmērus, izmantojot programmu WinMove, izlaist logus, kuru nosaukumos vai saturā ir iespiedumi utt. Tā kā šīs funkcijas neietilpst šī raksta darbības jomā, pārbaudiet AutoHotKey oficiālā dokumentācija par komandu WinMove lai uzzinātu vairāk par tiem.

Galīgais scenārijs

Visbeidzot, mēs sasniedzam mūsu ceļojuma grūtāko posmu. Sagatavojieties nākamajai darbībai, sagaidot, ka saglabāsiet skriptu un labi... Palaidiet to.

Jā, tas bija tā — skripts ir pabeigts, un nekas cits neatliek, kā to izmēģināt. Izmantojiet definēto saīsni, un jebkurš aktīvais logs tiks pārvietots uz ekrāna centru.

Galīgajam skripta failam, kas atvērts teksta redaktorā, vajadzētu izskatīties apmēram šādi:

#NoEnv; Ieteicams veiktspējai un saderībai ar turpmākajiem AutoHotkey laidieniem.
; #Brīdināt; Iespējojiet brīdinājumus, lai palīdzētu noteikt izplatītas kļūdas.
SendMode ievade; Ieteicams priekšjauns skriptus tā izcilā ātruma un uzticamības dēļ.
SetWorkingDir %A_ScriptDir%; Nodrošina konsekventu sākuma direktoriju.
^y::
WinGetTitle, ActiveWindowTitle, A; Iegūstiet aktīvo logu's tituls "mērķauditorijas atlase" tas/rīkojoties pēc tā.
WinGetPos platums, augstums, %ActiveWindowTitle%; Esi aktīvs logss pozīcija, lietota priekš mūsu aprēķini.
TargetX := (A_ScreenWidth/2)-(Platums/2); Aprēķiniet horizontālo mērķi, kur mēs pārvietosim logs.
TargetY := (A_ScreenHeight/2)-(Augums/2); Aprēķiniet vertikālo izvietojumu no uz logs.

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Pārvietojiet logs uz aprēķinātajām koordinātām.

atgriezties

Ņemiet vērā, ka varat kopēt iepriekš minēto skriptu, ielīmēt to Notepad vai līdzīgā teksta redaktorā un saglabāt ar AHK paplašinājumu. Pēc tam "palaidiet" to ar instalētu AutoHotKey, lai centrētu jebkuru logu ikreiz, kad nospiežat taustiņu kombināciju CTRL + Y. Ja jums nepatīk šis īsinājumtaustiņš, iestatiet rindiņu "^y::" uz citu taustiņu kombināciju. Piemēram, !+c:: saistītu funkciju ar taustiņu kombināciju Shift + Alt + C.

Bonusa trase

Jūsu ērtībām esam nolēmuši uzburt un iekļaut sekundāro skriptu, kas noderēs tiem, kam ir divu monitoru iestatījumi.

Lai šis raksts būtu racionalizēts, mēs tajā esam iekļāvuši informāciju par skripta darbību komentāru veidā. Varat tos noņemt no iterācijas.

Īss stāsts par to, kā tas atšķiras no iepriekš minētā skripta, ir tāds, ka mēs pievienojam arī mainīgo PositionToggle un kādu "IF loģiku". Pēc tam mēs tos izmantojam, lai "pārvilktu" logu starp monitoriem. Jāatzīmē, ka tas ir neelegants un "uzlauzts" problēmas risinājums. Tomēr mēs izvēlējāmies to, nevis vienkāršotu kodu, jo šī pieeja ir vieglāk saprotama un pielāgojama ikvienam, kas nav pazīstams ar AutoHotKey.

#NoEnv; Ieteicams veiktspējai un saderībai ar turpmākajiem AutoHotkey laidieniem.
; #Brīdināt; Iespējojiet brīdinājumus, lai palīdzētu noteikt izplatītas kļūdas.
SendMode ievade; Ieteicams priekšjauns skriptus tā izcilā ātruma un uzticamības dēļ.
SetWorkingDir %A_ScriptDir%; Nodrošina konsekventu sākuma direktoriju.
PositionToggle = 1; Izmantot a numuru slēdzis priekš marķēšana ieslēgts kas uzrauga logs vajadzētu parādīties.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos platums, augstums, %ActiveWindowTitle%

Ja PositionToggle = 1; Pārbaudiet slēdža stāvoklis un "darīt kas atrodas starp cirtainajām iekavām", ja tā ir komplektsuz1priekš mūsu galvenais monitors.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Height/2)
PositionToggle = 2; "Švīkājiet" slēdzi, lai, atkārtoti izmantojot karsto taustiņu, mūsu aktīvais logs pārietu uz otro monitoru.
}
Citādi, ja PositionToggle = 2; Vai mēs iepriekš esam izmantojuši karsto taustiņu, "švīkājot" pārslēgšanas numurs uz otro monitoru? Tad skriptam tā vietā vajadzētu rīkoties's starp tālāk norādītajām krokainajām iekavām, nevis iepriekš norādītajām iekavām.
{
SysGet, Mon2, monitors, 2; Iegūstiet otro monitoru's detaļas
Mon2Width := Mon2Right - Mon2Left; Aprēķiniet otro monitoru's faktiskais platums.
Mon2Height := Mon2Bottom - Mon2Top; Aprēķiniet otro monitoru's faktiskais augstums.

TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Aprēķiniet, kur pārvietot logu. Ņemiet vērā, ka mēs pievienojam arī primāro monitoru's platums kopš AutoHotKey var'nepārvietojiet logus atsevišķos monitoros, bet pa to kombināciju "virsmas".
TargetY := (pirmd.2augstums/2)-(augstums/2)+pirmd.2augšpuse; Aprēķiniet optimālo vertikālo mērķi loga pārvietošanai otrajā monitorā. Tāpat kā iepriekš, otrais monitors's vertikālās detaļas tiek noteiktas attiecībā pret primāro monitoru. Tādējādi mums ir jākļūst radošiem, lai iegūtu optimālu mērķi, atzīstot, kā otrais monitors's top nav't vienāds ar 0 (tāpat kā primārais's).

PositionToggle = 1; Pavelciet slēdzi atpakaļ tā, lai ja mēs atkārtoti izmantojam karsto taustiņu logs pāries atpakaļ uz primāro monitoru.
}

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Faktiskā darbība, aktīvo pārvietošana logs uz mūsu aprēķinātajām koordinātām.

atgriezties

Vienkāršākais veids ir centrēt logu ar atslēgu

Un tagad esat pabeidzis! Ja viss darbojas labi, tagad varat izmantot tikko iestatīto karsto taustiņu, lai jebkurā laikā centrētu logu.

Atrodiet, kur tērējat savu laiku operētājsistēmā Windows, izmantojot AutoHotKey

Lasiet Tālāk

DalītiesČivinātDalītiesE-pasts

Saistītās tēmas

  • Windows
  • Windows 10
  • Windows 11
  • AutoHotkey
  • Windows pielāgošana

Par autoru

Odisejs Kourafalos (Publicēts 31 raksts)

OK īstā dzīve sākās ap 10, kad viņš ieguva savu pirmo datoru – Commodore 128. Kopš tā laika viņš ir kausējis taustiņu vāciņus, rakstot 24/7, cenšoties izplatīt The Word Of Tech ikvienam, kurš ir pietiekami ieinteresēts, lai klausītos. Vai, pareizāk sakot, lasīt.

Vairāk no Odysseas Kourafalos

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu