Wie kann ich Windows 10 zwingen, Programme tatsächlich am exakt gleichen Ort und mit der exakt gleichen Größe zu öffnen?

Wie kann ich Windows 10 zwingen, Programme tatsächlich am exakt gleichen Ort und mit der exakt gleichen Größe zu öffnen?

Ich habe vor Kurzem auf meinem Heim-PC auf Windows 10 aktualisiert. In Windows 7 hatte ich einige Startprogramme, die ich häufig verwendete, so eingestellt, dass sie beim Start auf einem zweiten Monitor geöffnet wurden. Diese Programme öffneten sich immer am gleichen Ort und in der gleichen Größe. Ich gehe davon aus, dass dies eine Funktion sowohl von Windows als auch des Programms selbst ist.

In Windows 10 ist mir aufgefallen, dass einige Programme dieses Verhalten nicht zeigen. Sie werden zwar an derselben Stelle geöffnet, sind aber horizontal 10-20px kürzer. Beim Start (oder auch während der allgemeinen Nutzung) maximiere ich beispielsweise Windows horizontal explorer.exe. Wenn der Explorer dann jedoch erneut geöffnet wird, werden 10-20px Breite von der linken und rechten Seite des Fensters genommen.

Bildbeschreibung hier eingeben

Im Bild oben ist im oberen Teil der Explorer geöffnet und horizontal maximiert. Unten ist der Explorer nach dem Schließen wieder geöffnet und seine Standardposition und -größe wird (wie ich annehme) von Windows festgelegt. (Hellblau ist der Bildhintergrund, Schwarz ist das „Niemandsland“ im Desktopbereich, Dunkelgrau ist mein Desktophintergrund, die roten Linien zeigen die ungefähre Position der fehlenden Fensterbreite.)


Wie kann ich Windows 10 zwingen,wirklichund Programme immer am exakt gleichen Ort und mit der exakt gleichen Größe öffnen?

Beachten Sie, dass dieses Problem bei manchen Programmen nicht auftritt. Insbesondere Firefox wird immer an genau derselben Stelle und in genau derselben Größe geöffnet. Ich bin mir jedoch absolut sicher, dass dies eine Funktion von Firefox ist. Da es sich explorer.exeum Windows handelt, weiß ich, dass dieses Problem auch bei Windows liegt.

Antwort1

Es gibt ein kostenloses Tool, das die Skriptsprache von verwendet AutoHotkey.

Ein Benutzer namens gallaxhar hat ein Skript im Beitrag erstellt Letzte Fensterposition für jeden Prozess automatisch wiederherstellen das als automatischer Fenstermanager fungiert und Fensterpositionen ohne Benutzereingabe oder -einrichtung speichert. Es funktioniert, indem es die aktuell aktiven Fensterinformationen (ID und Prozessname) abruft. Es speichert die neueste Fenstergröße/-position in einer iniDatei und liest aus dieser Datei, wenn neue Fenster-IDs aktiv werden. Es passt die Größe nur der Fenster automatisch an, nachdem es ausgeführt wurde, es passt nur die Größe neuer IDs automatisch an und es tut dies nur einmal für diese ID.

Nach der Installation von AutoHotkey platzieren Sie das Skript in einer .ahkDatei. Testen Sie es, indem Sie es mit einem Doppelklick starten. Es wird ein grünes „H“-Symbol in der Taskleiste haben, auf das Sie mit einem Rechtsklick klicken können, um es zu beenden. Sobald es ordnungsgemäß funktioniert, können Sie es in Ihrem Startordner ablegen.

Ich habe das Skript getestet und es scheint in Ihrem Szenario zu funktionieren.

Das Skript ist hier wiedergegeben:

; Automatically Restore Previous Window Size/Pos

; To make this script run when windows starts, make sure RegistryAdd.ahk is in the same directory as this script, run this script, and it will be added to the registry. Then delete RegistryAdd.ahk
#Include *i RegistryAdd.ahk

; To easily remove the previously added registry entry, make sure RegistryRemove.ahk is in the same directory as this script, run this script, and it will be removed from the registry. Then delete RegistryRemove.ahk
#Include *i RegistryRemove.ahk

#SingleInstance Force
#Persistent
#NoEnv
;#NoTrayIcon
SetWinDelay, 50
Process, Priority, , Normal

MatchList := ""

; Build the MatchList
WinGet, id, list,,, Program Manager
Loop, %id%
{
    this_id := id%A_Index%
    if (MatchList = "")
    MatchList := this_id
    else
    MatchList := MatchList . "," . this_id 
}

; ExclusionList
ExclusionList = ShellExperienceHost.exe,SearchUI.exe

; The main program loop, which manages window positions/sizes and saves their last known configuration to an ini file in the script directory.
Loop,
{
    Sleep, 350
    WinGet, active_id, ID, A
    if active_id not in %MatchList% ; Then this is a new window ID! So, check if it has a configuration saved.
    {
        MatchList := MatchList . "," . active_id ; This window ID is not new anymore!
        WinGet, active_ProcessName, ProcessName, A
        WinGetClass, active_Class, A
        IniRead, savedSizePos, %A_ScriptDir%\WindowSizePosLog.ini, Process Names, %active_ProcessName%
        if (savedSizePos != "ERROR" AND active_Class != "MultitaskingViewFrame" AND active_class != "Shell_TrayWnd") ; Then a saved configuration exists, size/move the window!
        {
            StringSplit OutputArray, savedSizePos,`,
            if (active_ProcessName = "explorer.exe" AND active_Class != "CabinetWClass")
            {

            }
            else
            {
                WinMove, A,, OutputArray1, OutputArray2, OutputArray3, OutputArray4
            }
        }
        else ; No saved configuration exists, save the current window size/pos as a configuration instead!
        {
            WinGetPos X, Y, Width, Height, A
            WinGet, active_ProcessName, ProcessName, A
            WinGetClass, active_Class, A
            If (X != "" AND Y != "" AND Width != "" AND Height != "" AND Width > 0 AND Height > 0 AND active_Class != "MultitaskingViewFrame" AND active_class != "Shell_TrayWnd")
            {
                if (active_ProcessName = "explorer.exe" AND active_Class != "CabinetWClass")
                {

                }
                else if active_ProcessName not in %ExclusionList%
                {
                    IniWrite %X%`,%Y%`,%Width%`,%Height%, %A_ScriptDir%\WindowSizePosLog.ini, Process Names, %active_ProcessName%
                }
            }
        }
    }
    else ; Save/overwrite the active window size and position to a file with a link to the processname, for later use.
    {
        WinGetPos X, Y, Width, Height, A
        WinGet, active_ProcessName, ProcessName, A
        WinGetClass, active_Class, A
        If (X != "" AND Y != "" AND Width != "" AND Height != "" AND Width > 0 AND Height > 0 AND active_Class != "MultitaskingViewFrame" AND active_class != "Shell_TrayWnd")
        {
            if (active_ProcessName = "explorer.exe" AND active_Class != "CabinetWClass")
            {

            }
            else if active_ProcessName not in %ExclusionList%
            {
                IniWrite %X%`,%Y%`,%Width%`,%Height%, %A_ScriptDir%\WindowSizePosLog.ini, Process Names, %active_ProcessName%
            }
        }
    }
}
Return

Ein kommerzielles Tool, das sich auch die Position und Größe von Programmen und Fenstern merkt und wiederherstellt, ist DeskSoft WindowManager (10 $, Testversion).

Dieses Tool merkt sich Positionen und Größen auch nach einem Neustart.

Antwort2

Dieses Problem ist so alt und so weit verbreitet, dass viele verschiedene Entwickler Projekte veröffentlicht haben, um diesen Mangel im Windows-Betriebssystem zu beheben.

Viele sind kostenlos: http://www.stefandidak.com/windows-layout-manager/

oder Open Source: https://github.com/lapo-luchini/WindowsLayoutSnapshot/tree/v1.3.0.0

Einigen Leuten ist aufgefallen, dass sich Windows anders verhält, wenn man das Startmenü nach oben statt nach unten verschiebt.

Sie können sich auch bei Microsoft beschweren. Dies sollte genauso funktionieren wie bei anderen Fensterverwaltungssystemen, die für Linux und MacOS verfügbar sind. Verwenden Sie das Feedback-Tool, um sich zu beschweren:https://support.microsoft.com/en-us/help/4021566/windows-10-send-feedback-to-microsoft-with-feedback-hub-app

verwandte Informationen