Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Fenster zentrieren

 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
cringe
Gast





BeitragVerfasst am: Di Aug 08, 2006 2:41 pm    Titel: Fenster zentrieren Antworten mit Zitat

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. Very Happy
Nach oben
halweg



Anmeldedatum: 05.01.2006
Beiträge: 785
Wohnort: Dresden

BeitragVerfasst am: Mi Aug 09, 2006 3:29 pm    Titel: Antworten mit Zitat

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. Cool

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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