 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
cringe Gast
|
Verfasst am: Di Aug 08, 2006 2:41 pm Titel: Fenster zentrieren |
|
|
Hallo, Leute!
Mir ist bei meiner 2-Schirm-Konfiguration gerade mal wieder ein Fenster ausserhalb des Bildschirms erschienen, deshalb:
| Code: |
; -----------------------------------------------------------------------------
; #############################################################################
; -----------------------------------------------------------------------------
; Name: CenterWindow (Ohne Leerzeichen)
; -----------------------------------------------------------------------------
; Prefix: NCR_ (eindeutiges Kürzel(Prefix))
; Version: 0.1
; Date: 2006-08-08
; Author: Carsten Ringe
; Copyright: 2006 Carsten Ringe
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
; === Initialisation ==========================================================
; -----------------------------------------------------------------------------
; Initialisierungsroutine, welche beim Start von ac'tivAid aufgerufen wird.
init_CenterWindow:
; Folgende drei Variablen sind wichtig, damit die Erweiterung von ac'tivAid erkannt wird.
; Die Variablennamen dürfen nicht verändert werden und dürfen keine Kommentare dahinter gesetzt werden.
; * Das verwendete eindeutige Präfix ohne Unterstrich
Prefix = NCR
; * Der Name der Erweiterung ohne Leerzeichen und Sonderzeichen
%Prefix%_ScriptName = CenterWindow
; * Die Version der Erweiterung
%Prefix%_ScriptVersion = 0.1
; Der Autor der Erweiterung
%Prefix%_Author = Carsten Ringe
; Erweiterungen, welche für diese Erweiterung installiert sein müssen (kommasepariert, ohne Leerzeichen)
RequireExtensions =
; Wenn 1, dann gibt's im 'Pfeil'-Menü einen Eintrag, dass Einstellungen hinzugeladen werden können
AddSettings_CenterWindow =
; Wenn eine eigene Konfigurations-Datei statt ac'tivAid.ini verwendet wird, muss hier der relative Pfad angegeben werden
;ConfigFile_CenterWindow = ; %SettingsDir%\datei.ini
; Durch setzen der folgenden drei Variablen, kümmert sich ac'tivAid automatisch um ein Tastaturkürzel
; für die Erweiterung und fügt auch automatisch ein Tastaturkürzel-Schaltfläche zum Konfigurationsdialog hinzu
CustomHotkey_CenterWindow = 1 ; automatisches benutzerdefinierbares Tastaturkürzel? (1 = ja)
Hotkey_CenterWindow = ALT+SHIFT+C ; Standard-Hotkey
HotkeyPrefix_CenterWindow = ; Präfix, welches vor immer vor dem Tastaturkürzel gesetzt wird
; in diesem Fall sorgt es dafür, dass das Tastaturkürzel durchgeschleift wird.
HideSettings = 0 ; Wenn 1, dann bekommt die Erweiterung keinen Eintrag im Konfigurationsdialog
EnableTray_CenterWindow = 1 ; Soll eine Erweiterung nicht im Tray-Menü aufgeführt werden, muss der Wert 0 betragen
DisableIfCompiled_CenterWindow = ; Wenn 1, lässt sich die Erweiterung in kompilierter Form nicht de-/aktivieren
; Sprachabhängige Variablen
If Lng = 07 ; = Deutsch (0407, 0807, 0c07 ...)
{
; Name des Menüeintrags im Tray-Menü
MenuName = %NCR_ScriptName% - Kurzbeschreibung
; Beschreibung für den Erweiterungsmanager und den Konfigurationsdialog
Description = Zentriert das aktuelle Fenster auf dem Bildschirm
; Es gilt zu beachten, dass die Erweiterung selber später nicht auf MenuName und Description zugreifen kann,
; das sie später die Werte der zuletzt geladenen Erweiterung enthalten. Die Variablen werden von ac'tivAid aber
; automatisch in ExtensionMenuName[%NCR_ScriptName%] und ExtensionDescription[%NCR_ScriptName%] gespeichert
; hier folgen nun alle weiteren sprachspezifischen Textvariablen
; es empfiehlt sich folgende Form:
; lng_NCR_VariablenName = Text
; Für GUI-Elemente sind auch automatische Tooltips möglich
; tooltip_NAMEDESGUIELEMENTS = Text
}
else ; = Alternativ-Sprache (wenn nicht Deutsch und keine language.ini vorhanden)
{
MenuName = %NCR_ScriptName% - Short Description
Description = Centers the current window on the screen
; ....
}
; Kontext-Hilfe definieren. (Der Übersicht halber als Unterroutine)
; Soll die Hilfe auch noch sprachabhängig ausgewählt werden, muss man für jede
; Sprache eine eigene Unterroutine anlegen und entsprechend in der Sprach-
; erkennung aufrufen
Gosub, Help_CenterWindow
; Hier folgt nun z.B. das Einlesen der Konfigurationswerte aus der INI-Datei
; zusätzliches Hotkey aus der INI-Datei einlesen
; Syntax: HotkeyRead ( Name des Tastaturkürzels, INI-Datei, INI-Sektion, INI-Variable, Subroutine des Tastaturkürzels, Standard-Kürzel)
; func_HotkeyRead( "NCR_HOTKEYNAME", ConfigFile , NCR_ScriptName, "INI-Variable", "NCR_sub_UNTERROUTINE", "DEFAULTWERT" )
; Die zusätzlichen Unterordner aus der INI-Datei auslesen
; IniRead, NCR_VARIABLE, %ConfigFile%, INI-Sektion, INI-Variable, DEFAULTWERT
Return
; Die folgende Routine enthält alle Befehle, welche dazu nötig sind den Konfigurationsdialog zu ergänzen
; Das erste GUI-Element sollte immer mit "XS+10 Y+5" positioniert werden, wobei der Y-Wert ggf.
; auch angepasster werden kann.
SettingsGui_CenterWindow:
; Schaltfläche für Abfrage eines Tastaturkürzels hinzufügen
func_HotkeyAddGuiControl( lng_NCR_TEXT, "NCR_HOTKEYNAME", "xs+10 y+10 w160" )
; Eigene Schaltflächen sollten in den Optionen auch sub_CheckIfSettingsChanged
; aufrufen, damit ac'tivAid erkennt, dass Änderungen vorgenommen wurden.
; z.B.: Gui, Add, Edit, xs+10 y+5 gsub_CheckIfSettingsChanged vNCR_var, %lng_NCR_text%
Return
; wird aufgerufen, wenn im Konfigurationsdialog OK oder Übernehmen angeklickt wird
SaveSettings_CenterWindow:
; Syntax: HotkeyWrite ( Name des Tastaturkürzels, INI-Datei, Sektion, INI-Variable [, Subroutine des Tastaturkürzels] )
func_HotkeyWrite( "NCR_HOTKEYNAME", ConfigFile , NCR_ScriptName, "INI-Variable" )
; IniWrite, %NCR_VARIABLE%, %ConfigFile%, INI-Sektion, INI-Variable
; Wenn es nötig ist, dass ac'tivAid nach dem Speichern der Einstellungen neu geladen werden muss, kann man Reload auf 1 setzen
Reload = 1
Return
; Wird aufgerufen, wenn Einstellungen über das 'Pfeil'-Menü hinzugefügt werden, ist nur notwendig wenn AddSettings_CenterWindow = 1
AddSettings_CenterWindow:
Return
; wird beim Abbrechen des Konfigurationsdialogs aufgerufen
CancelSettings_CenterWindow:
Return
; wird beim Aktivieren der Erweiterung aufgerufen
DoEnable_CenterWindow:
; func_HotkeyEnable("NCR_HOTKEYNAME")
Return
; wird beim Deaktivieren der Erweiterung und auch vor dem Speichern der Einstellungen aufgerufen
DoDisable_CenterWindow:
; func_HotkeyDisable("NCR_HOTKEYNAME")
Return
; wird aufgerufen, wenn der Anwender die Erweiterung auf die Standard-Einstellungen zurücksetzt
DefaultSettings_CenterWindow:
Return
; wird aufgerufen, wenn ac'tivAid beendet oder neu geladen wird.
OnExitAndReload_CenterWindow:
Return
; -----------------------------------------------------------------------------
; === Hotkeys =================================================================
; -----------------------------------------------------------------------------
; Unterroutine für das automatische Tastaturkürzel
sub_Hotkey_CenterWindow:
Gosub, NCR_main_CenterWindow
Return
; -----------------------------------------------------------------------------
; === Subroutines =============================================================
; -----------------------------------------------------------------------------
NCR_main_CenterWindow:
; get screen size
CenterX := (A_ScreenWidth/2)
CenterY := (A_ScreenHeight/2)
; get the window size
WinGetPos, X, Y, Width, Height, A
newX := (CenterX - Width/2)
newY := (CenterY - Height/2)
; move it!
WinMove, A, , newX, newY
;MsgBox % "Position: " newX "," newY
Return
; Kontexthilfe
Help_CenterWindow:
NCR_Help =
(
Hier wird kurz die Erweiterung beschrieben ..
...
..
.
)
Return
|
Ok, ich weiß: Man muss die Tastenkonfiguration beim ersten Start einstellen, sonst funktioniert's nicht. Aber ich bin für mein erstes Skript erstmal damit zufrieden, dass es klappt.  |
|
| Nach oben |
|
 |
halweg
Anmeldedatum: 05.01.2006 Beiträge: 785 Wohnort: Dresden
|
Verfasst am: Mi Aug 09, 2006 3:29 pm Titel: |
|
|
Ich hatte diesen Ansatz anhand eines Explorerfensters schon mal hier vorgstellt. Nach über einem Jahr Erfahrung mit Fensteroptimierungen per AHK haben sich dann folgende Features bewährt:
1. Die Fensteroptimierung auf einen Mousbutton legen (z. B. dreimal Mitteltaste).
2. Zentrieren des aktiven Fensters auf den Bildschirm, wo sich gerade der Mauszeiger befindet.
3. Anpassen des Fensters an die Größe des Bildschirms, wo gerade die Maus ist (mit ca. 50 Pixel Rand nach jeder Seite).
4. Bei bestimmten Fenstern (geöffnete E-Mail, Kalendereintrag) vergößern des Fensters nur auf das sinnvolle Maß.
5. Bei Explorerfenstern vergrößeren des Fensters entsprechend dem gerade dargestellten Inhalt.
Heute möchte ich diese Features an meiner Maus nicht mehr vermissen. Aber bald kommt der dritte Bildschirm, da muss noch ein bisschen dazuprogrammiert werden.
Zum Code: der Ansatz für die Fensteroptimierung ist mit WINMOVE schnell getan. Ich habe mir die Mühe erspart, hier ein nachnutzbares Skript zu posten, weil ich dann erst alle konstanten Pixelwerte durch Variablen ersetzen müsste. Wie oben unschwer erkennbar, wird durch große Variabilität der Code schnell sehr unübersichtlich.
Ein Beispielskript mit der Explorerfenster-Optmierung ist hier in diesem Beitrag http://de.autohotkey.com/forum/viewtopic.php?p=1847#1847 zu finden. |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|