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 

Wenn die Explorerfenster zu viel Desktop beanspruchen ...

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



Anmeldedatum: 05.01.2006
Beiträge: 846
Wohnort: Dresden

BeitragVerfasst am: Di März 07, 2006 3:37 pm    Titel: Wenn die Explorerfenster zu viel Desktop beanspruchen ... Antworten mit Zitat

... ist es doch naheliegend, sie kleiner zu machen. Vor allem wenn das angezeigte Verzeichnis fast leer ist.

Doch das Verkleinern ist eine mühsame Klickerei: Spaltenbreite optimieren, Fenstergröße anpassen und Fenster in eine freie Desktopecke ziehen.
Wenn ihr diese Klickerei auch als lästig empfindet, solltet ihr euch mal das untenstehende Skript anschauen.
Es optimiert die Größe eines Explorerfensteres in der Detailansicht (ohne Ordnerbaum) unter Berücksichtigung seines tatsächlichen Inhalts. Rechts und unten wird ein klein wenig Platz gelassen.
Das optimierte Fenster wird dann so positioniert, dass der aktuelle Mauszeiger in der Mitte steht und das Fenster nicht größer ist, als der Bildschirm.

Wenn ihr nun noch eine Maustaste freihabt (bei mir ist es Dreifachklick Daumentaste) wird es noch einfacher: nur mit der Maus auf den gewünschten Mittelpunkt des aktiven Explorerfensters zeigen, klicken und fertig Very Happy .

Vielleicht seht Ihr aber auch noch Optimierungspotential Question ...
Code:

; Explorer-Fensteroptimierung
; Dieses Skript hat folgende Funktionen
; 1. Einstellen der Detailansicht im Explorer (deutsche Tastenfolge)
; 2. Optimieren der Spaltenbreite
; 3. Einstellen der Größe ds Explorerfensters entsprechend seinem Inhalt
; 4. Positionierung des angepassten Fensters zentriert am aktuellen Mauscursor
; by Halweg, Thx to BoBo
COORDMODE, MOUSE, SCREEN
#y::
maximale_fensterbreite = 1230  ;*** hier einstellen (< physikalische Bildschirmauflösung!)
maximale_fensterhoehe = 750    ;*** hier einstellen (< physikalische Bildschirmauflösung!)
minimale_fensterhoehe = 200   
WINGETCLASS, fenstertyp, A
IFNOTEQUAL, fenstertyp, CabinetWClass, Exit
MOUSEGETPOS, maus_x, maus_y
SEND, !ad^{NUMPADADD}                           ;*** Details anzeigen und Spaltenbreite optimieren (deutscher Explorer)
WINMOVE, A, , 150, 50, maximale_fensterbreite   ;*** temporär breites Fenster fürs Spaltenzählen einstellen
CONTROLFOCUS, SysListView321, A
;*** Position der Spaltenköpfe ermitteln und dort nach Separatoren suchen
CONTROLGETPOS, x_liste, y_liste,,, SysListView321, A
CONTROLGET, nspalten_liste, LIST, COUNT COL, SysListView321, A
CONTROLGET, nzeilen_liste, LIST, COUNT, SysListView321, A
x_suche := x_liste + 4
y_suche := y_liste + 5
n_spalte := 0
LOOP, % maximale_fensterbreite
  {                           
  x_suche ++
  PIXELGETCOLOR, pixelfarbe, x_suche, y_suche
  IFEQUAL, pixelfarbe, 0xFFFFFF  ;*** Spaltenseparator gefunden
    {
    n_spalte ++
    IFEQUAL n_spalte, %nspalten_liste%, BREAK
    }
  }
;*** Ermittelen der Fenstergröße und Position
soll_breite := x_suche - x_liste + 27 ;*** Scrollbalken berücksichtigen
soll_hoehe := nzeilen_liste * 17 + 130
IF (soll_hoehe > maximale_fensterhoehe) ;*** zu hohes Fenster
  soll_hoehe := maximale_fensterhoehe
IF (soll_hoehe < minimale_fensterhoehe) ;*** zu niedriges Fenster
  soll_hoehe := minimale_fensterhoehe
soll_x := maus_x - soll_breite/2
IF soll_x < 10                          ;*** Fenster zu weit links
  soll_x = 10
soll_y := maus_y - soll_hoehe/2
IF soll_y < 10                          ;*** Fenster zu weit oben
  soll_y = 10
WINMOVE,  A, , soll_x, soll_y, soll_breite, soll_hoehe
RETURN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: Di März 21, 2006 5:00 pm    Titel: Antworten mit Zitat

Hallo halweg,

bin erst jetzt über Dein Skript gestolpert, daher erst so spät ein paar Anmerkungen dazu:

1) Bei meinem Windows (XP Pro, SP2, deutsch) musste ich die Zeile
Code:
IFNOTEQUAL, fenstertyp, CabinetWClass, Exit

ersetzen durch
Code:
IFNOTEQUAL, fenstertyp, ExploreWClass, Exit

sonst wurde das Skript direkt abgebrochen.
2) Ich bin immer ein ekliger Tester bei GUI-Geschichten, weil ich grundsätzlich ein Zweischirm-System einsetze. Und: das Fenster wird immer auf den primären Schirm verschoben Sad
3) Beim Resize flackert der Explorer erstmal; seine Breite wird erstmal ziemlich aufgeblasen, bevor er auf die gewünschte Größe schrumpft (sieht man ja auch im Code)

Als Wünsche (bzw. Optimierungsmaterial Smile) hätte ich anzumelden:

a) Beim Resize nicht nur die Spalten berücksichtigen sondern auch evtl. Ordneransichten u.ä., so dass das Fenster tatsächlich so schmal wird wie möglich, aber nicht weniger
b) Höhenanpassung und Positionierung nur optional ändern, d.h. am besten am Anfang des Skripts zwei Parameter definieren, über die man das Verhalten steuern kann.

Trotz allem "Gemeckere": ich find Deine Idee ziemlich gut. Hast Du schon mal dran gedacht, das als Extension für ac´tivAid aufzubereiten?

Viele Grüße,
Rob
Nach oben
RobOtter



Anmeldedatum: 21.03.2006
Beiträge: 42
Wohnort: Darmstadt

BeitragVerfasst am: Di März 21, 2006 5:25 pm    Titel: Antworten mit Zitat

Sorry, ich war im deutschen Forum noch kein Mitglied, ist jetzt nachgeholt. Das obige Posting ist von mir!

halweg, ich habe gerade in einem anderen Thread gesehen, dass Du auch ein Zweischirm-System einsetzt. Da Du Dein Skript bestimmt auch damit getestet hast (Der Code enthält ja auch das "COORDMODE" statement) und kein Problem gesehen hast, wollte ich Dir evtl. mühseliges Problemsuchen ersparen:
Mein System ist so eingestellt, dass der primäre Bildschirm _rechts_ vom sekundären steht, was u.U. (=nicht geprüft) zu negativen Koordinaten und damit zu dem oben beschriebenen Verhalten führen könnte.

Viele Grüße,
Rob
_________________
Ich sag doch gar nichts, ich red ja nur...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
halweg



Anmeldedatum: 05.01.2006
Beiträge: 846
Wohnort: Dresden

BeitragVerfasst am: Di März 21, 2006 6:05 pm    Titel: Antworten mit Zitat

Hallo Rob (einloggen vergessen Question Wink ),
danke zunächst für dein Interesse.
Anonymous hat Folgendes geschrieben:
1) Bei meinem Windows (XP Pro, SP2, deutsch) musste ich die Zeile
Code:
IFNOTEQUAL, fenstertyp, CabinetWClass, Exit

ersetzen durch
Code:
IFNOTEQUAL, fenstertyp, ExploreWClass, Exit

sonst wurde das Skript direkt abgebrochen.
Das ist interessant. Zu ExploreWClass-Fenstern komme ich (gleiches OS) nur, wenn ich explorer.exe an der Einabeaufforderung starte. Beim Klicken auf Links am Desktop oder andere Direktaufrufe über Verzeichnisnamen kommt immer ein CabinetWClass-Fenster. Aber das lässt sich ja abfangen ...

Anonymous hat Folgendes geschrieben:
2) Ich bin immer ein ekliger Tester bei GUI-Geschichten, weil ich grundsätzlich ein Zweischirm-System einsetze. Und: das Fenster wird immer auf den primären Schirm verschoben Sad
Das hab ich bewusst so gemacht. Meine eigene Variante des Skripts (s. nächster Beitrag) ist da spezifischer und berücksichtigt ein Zweibildschirmsystem wie ich selbst es habe. Ich hab mich entschlossen auch diese Variante als beispielhafte Umsetzung hier zu posten, auch wenn sie nicht direkt nachnutzbar ist.

Anonymous hat Folgendes geschrieben:
3) Beim Resize flackert der Explorer erstmal; seine Breite wird erstmal ziemlich aufgeblasen, bevor er auf die gewünschte Größe schrumpft (sieht man ja auch im Code)
Ja, da hab ich auch noch keine Alternative gefunden. Ich muss, wenn ich die Breite der Spalten messen will, das Fenster zwischenzeitlich maximieren Confused

Anonymous hat Folgendes geschrieben:

a) Beim Resize nicht nur die Spalten berücksichtigen sondern auch evtl. Ordneransichten u.ä., so dass das Fenster tatsächlich so schmal wird wie möglich, aber nicht weniger
b) Höhenanpassung und Positionierung nur optional ändern, d.h. am besten am Anfang des Skripts zwei Parameter definieren, über die man das Verhalten steuern kann.
Ich hab nicht unbedingt den Ehrgeiz, hier ein universell verwertbares Skript zu posten. Ich denke, dass müsste, um unter verschiedenen Umgebungen und entsprechend verschiedener Nutzerwünsche zu funktionieren, mindestens doppelt so groß sein. Dafür reicht meine Zeit momentan nicht. Sad

Anonymous hat Folgendes geschrieben:

Hast Du schon mal dran gedacht, das als Extension für ac´tivAid aufzubereiten?
Eher nicht (s.o.). Aber was ist eigentlich ac´tivAid Question

Zuletzt bearbeitet von halweg am Di März 21, 2006 6:43 pm, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
halweg



Anmeldedatum: 05.01.2006
Beiträge: 846
Wohnort: Dresden

BeitragVerfasst am: Di März 21, 2006 6:37 pm    Titel: Antworten mit Zitat

Da hatten wir uns überlappt ...
Hier mal die für meine Verhältnisse angepasste Variante. Sie ist so natürlich nicht direkt nachnutzbar. Bei mir ist links ein 1280x800 Bildschirm (Primär) und rechts ein 1280x1024 Bildschirm (sekundär). Der Rechte ist horiziontal zentriert gegenüber dem Linken, so dass dort negative Koordinaten bei soll_y auftreten können. Da aber die Positionierung relativ zu den aktuellen Mauskoordinaten passiert, merkt das das Skript gar nicht.
Als Feature ist noch realisiert, dass ein Nicht-Explorerfenster (jetzt beide Typen erkannt) auf den Bildschirm, wo die Maus sich gerade befindet, verschoben und in der Größe angepasst wird. Auch sehr komfortabel Smile
Die Berücksichtung geöffneter Ordnerbäume (die ich selbst kaum verwende) ist aber noch nicht drin. Wäre aber nur ein Problem der Erkennung, ob ein Treeview aktiv ist: einfach 2 oder 3 zu nspalten_liste addieren.
Code:
; Explorer-Fensteroptimierung -  Variante für zwei Bildschirme
; Bildschirm links: 1280x800, Bildschirm rechts: 1280x1024
; Dieses Skript hat folgende Funktionen
; 1. Einstellen der Detailansicht im Explorer (deutsche Tastenfolge)
; 2. Optimieren der Spaltenbreite
; 3. Einstellen der Größe ds Explorerfensters entsprechend seinem Inhalt
; 4. Positionierung des angepassten Fensters am aktuellen Mauscursor
; 5. Nicht-Explorerfenster werden in dem Bildschirm, wo sich die Maus befindet,
;    verschoben und in der Größe dem Bildschirm angepasst
; by Halweg, Thx to BoBo
#y::          ; Noch besser ist hier irgendein "umgebogener" Mausklick
COORDMODE, MOUSE, SCREEN    ;*** Mouse Position at absolute screen coordinates:
MOUSEGETPOS, maus_x, maus_y
WINGETCLASS, fenstertyp, A
IF (fenstertyp = "CabinetWClass" OR fenstertyp = "ExploreWClass")     ; Exlporerfenster optimieren
  {
  SEND, !ad^{NUMPADADD}           ;*** Details anzeigen und Spaltenbreite optimieren (deutscher Explorer)
  WINMOVE, A, , 150, 50, 1100     ;*** temporär breites Fenster fürs Spaltenzählen einstellen
                                  ; 1100 - maximal mögliche Breite eines Fensters auf dem Bildschirm
  CONTROLFOCUS, SysListView321, A
  ;*** Position der Spaltenköpfe ermitteln und dort nach Separatoren suchen
  CONTROLGETPOS, x_liste, y_liste,,, SysListView321, A
  CONTROLGET, nspalten_liste, LIST, COUNT COL, SysListView321, A
  CONTROLGET, nzeilen_liste, LIST, COUNT, SysListView321, A
  x_suche := x_liste + 4
  y_suche := y_liste + 5
  n_spalte := 0
  LOOP, 1095                     ;*** Suche über die ganze Fensterbreite
    {
    x_suche ++
    PIXELGETCOLOR, pixelfarbe, x_suche, y_suche
    IFEQUAL, pixelfarbe, 0xFFFFFF  ;*** Spaltenseparator gefunden
      {
      n_spalte ++
      IFEQUAL n_spalte, %nspalten_liste%, BREAK
      }
    }
  ;*** Ermitteln der Fenstergröße und Position
  soll_breite := x_suche - x_liste + 27    ;*** Scrollbalken berücksichtigen
  soll_hoehe := nzeilen_liste * 17 + 130
  soll_x := maus_x - 10                    ;*** Fensterbeginn links vor der Maus!
  soll_y := maus_y - 110                   ;*** Fensterbeginn oben etwas über der Maus!
  IF (soll_hoehe < 200)                    ;*** Fenster nicht zu niedrig
    soll_hoehe := 200   
  IF soll_x < 1280                         ;*** Fenster soll auf linken Bildschirm
    {
    IF (soll_hoehe > 750)                  ;*** Fenster nicht zu hoch
      soll_hoehe := 750 
    IF (soll_y + soll_hoehe > 790)         ;*** Fenster nicht unten überlappen
      soll_y := 790 - soll_hoehe
    IF (soll_x + soll_breite > 1270)       ;*** Fenster nicht rechts überlappen
      soll_x := 1270 - soll_breite
    }
  ELSE                                     ;*** Fenster soll auf rechten Bildschirm
    {
    IF (soll_hoehe > 1000)                 ;*** Fenster nicht zu hoch
      soll_hoehe := 1000   
    IF (soll_y + soll_hoehe > 917)         ;*** Fenster nicht unten überlappen
      soll_y := 917 - soll_hoehe
    IF (soll_x + soll_breite > 2550)       ;*** Fenster nicht rechts überlappen
      soll_x := 2550 - soll_breite
     }
  WINMOVE,  A, , soll_x, soll_y, soll_breite, soll_hoehe
  }
ELSE                         ;*** anderes Fenster optimieren
  {
  IFLESS, maus_x, 1280, WINMOVE, A, , 150, 50, 1120, 740
  ELSE WINMOVE, A, , 1300, -60, 1200, 950 
  }
RETURN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RobOtter



Anmeldedatum: 21.03.2006
Beiträge: 42
Wohnort: Darmstadt

BeitragVerfasst am: Mi März 22, 2006 12:06 pm    Titel: Antworten mit Zitat

Hi!

Danke für Deine Anpassungen und Erklärungen. Wenn einiges, was ich ändern würde, "by intention" ist, kann ich natürlich nix dagegen sagen Smile

Bevor ich auf einige technische Punkte eingehe hier noch kurz, was ac´tivAid ist:
Vor einiger Zeit hat Wolfgang Reszel (besonders im englischen Forum unter "tekl" wohlbekannt) ein in AHK geschriebenes Plugin-System unter dem Namen "ac´tivAid" in der Zeitschrift c`t vorgestellt.
Das Ding ist wirklich klasse: ac´tivAid stellt im Prinzip ein Framework bereit für spezialisierte Plugins, die jeweils eine bestimmte Aufgabe erfüllen, z.B. neue Verzeichnisse (samt Unterverzeichnissen) anlegen, Mediaplayer steuern, Textbausteine definieren, ein persistentes Notizzettelchen, Dictionary- und Thesaurusabfragen übers Internet im Tooltip und und und... Alle diese Funktionen lassen sich über konfigurierbare Hotkeys aufrufen und man kann über ein gut dokumentiertes Template recht einfach sein eigenes Plugin (heisst dort Extension) schreiben.
Du findest die c`t-Anlaufstelle unter http://www.heise.de/ct/ftp/05/22/210/ und tekl´s Bugtracking-System (in dem man auch Wünsche äußern kann) unter http://activaid.rumborak.de
Super Sache, wirklich!

Indem man dieses Plugin-System benutzt, kann man seine Skripte bzw. Lösungen natürlich viel leichter einer größeren Anwenderschar zur Verfügung stellen. Wenn Du allerdings nicht den Ergeiz zu einem universell verwendbaren Skript hast, dann wirst Du wohl keine Extension entwickeln, oder? Wink

So, nu aber zur Technik:

1) ExploreWClass: Die Erklärung ist wohl, dass ich den Explorer immer über eine Verknüpfung starte - die Kommandozeile dazu lautet bei mir
Code:
%windir%\Explorer.exe /e,C:\

2) Spaltenbreite ermitteln:
Ich habe mal im englischen Forum (wo ja doch erheblich mehr Traffic ist als hier) nach "list column width" gesucht und ziemlich schnell eine Lösung gefunden (http://www.autohotkey.com/forum/viewtopic.php?t=6507). Damit kannst Du Dir das Verbreitern sparen, ebenso die ganze PixelGetColor-Geschichte und erhälst ganz nebenbei die Breite jeder einzelnen Spalte. Außerdem erhält man wirklich die echte Breite ohne den evtl Leerraum am rechten Rand. Ich hab das mal für Dein Skript angepasst:
Code:
ControlGet, myCols, List, COUNT COL, SysListView321, A
width_c0 = 0
   Loop %myCols%
   {
      thisCol := A_Index - 1
      SendMessage, 0x1000+29, %thisCol%, 0, SysListView321, A
      width_c0 := width_c0 + ErrorLevel
   }
MsgBox, Summe: %width_c0%

Der Trick ist, dass man diese SendMessage Nummer kennen muss...

Viele Grüße,
Rob
_________________
Ich sag doch gar nichts, ich red ja nur...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gast






BeitragVerfasst am: Mi März 22, 2006 1:13 pm    Titel: Antworten mit Zitat

Danke erst mal, Very Happy
werd ich heute abend mal ausprobieren.
Nach oben
halweg



Anmeldedatum: 05.01.2006
Beiträge: 846
Wohnort: Dresden

BeitragVerfasst am: Mi März 22, 2006 1:15 pm    Titel: Antworten mit Zitat

Embarassed Diesmal war ich der Gast
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
halweg



Anmeldedatum: 05.01.2006
Beiträge: 846
Wohnort: Dresden

BeitragVerfasst am: Do März 23, 2006 12:07 am    Titel: Antworten mit Zitat

Also, ich habs probiert und es klappt. Der Code wurde einfacher und das zwischendurch-Fenster-groß-machen ist weg. Very Happy
Mit dem SendMessage kann ich mich trotzdem nur schwer anfreunden. Confused Für die ganzen Befehle kann man ja glatt ein eigenes Unterforum aufmachen. Die Doku dazu ist jedenfalls sehr bescheiden.

Das mit dem ac´tivAid hab ich mir mal angeschaut. Ich muss aber sagen, das der Nutzwert der dort integrierten Funktionen mir momentan keine einzige Taste wert wäre. Ich nutze AHk für sehr weitgehende komplexere Aufgaben, die meinem Nutzungskontext entsprechen und mir wirklich viel Tipperei abnehmen. Allerdings kann man den Ac'tivAid-Skripten nützliche Codeideen zum Weiterbasteln entnehmen.
Mein Problem (neben dem Optimieren von Skripten, s. o.) ist eher, alle die Progrämmchen und Shortcuts so zu organisieren, dass man sie sich noch merken kann.

Hier nun die angepasste/optimierte Variante des Exlporerfensterskripts. Nach wie vor nur eine konkrete Ausprägung für meine Konfiguration.
Code:
; Explorer-Fensteroptimierung -  Variante für zwei Bildschirme
; Bildschirm links: 1280x800, Bildschirm rechts: 1280x1024
; Dieses Skript hat folgende Funktionen
; 1. Einstellen der Detailansicht im Explorer (deutsche Tastenfolge)
; 2. Optimieren der Spaltenbreite
; 3. Einstellen der Größe ds Explorerfensters entsprechend seinem Inhalt
; 4. Positionierung des angepassten Fensters am aktuellen Mauscursor
; 5. Nicht-Explorerfenster werden in den Bildschirm, wo sich die Maus befindet,
;    verschoben und in der Größe dem Bildschirm angepasst
; by Halweg, Thx to BoBo, RobOtter
#y::          ; Noch besser ist hier irgendein "umgebogener" Mausklick
COORDMODE, MOUSE, SCREEN    ;*** Mouse Position at absolute screen coordinates:
MOUSEGETPOS, maus_x, maus_y
WINGETCLASS, fenstertyp, A
IF (fenstertyp = "CabinetWClass" OR fenstertyp = "ExploreWClass") ; Exlporerfenster optimieren
  {
  SEND, !ad^{NUMPADADD}           ;*** Details anzeigen und Spaltenbreite optimieren (deutscher Explorer)
  CONTROLGET, nspalten_liste, LIST, COUNT COL, SysListView321, A   ;*** Anzahl Spalten ermitteln
  CONTROLGET, nzeilen_liste, LIST, COUNT, SysListView321, A        ;*** Anzahl Zeilen ermitteln
  spalten_breite = 0
  LOOP, %nspalten_liste%          ;*** Zu jeder Spalte mit seltsamen SENDMESSAGE-Befehl
    {                             ;    die Breite ermitteln und summieren
    akt_spalte := A_INDEX - 1
    SENDMESSAGE, 0x1000+29, %akt_spalte%, 0, SysListView321, A
    spalten_breite := spalten_breite + ErrorLevel
    }
  ;*** Ermitteln der Fenstergröße und Position
  soll_breite := spalten_breite + 30       ;*** Scrollbalken berücksichtigen
  soll_hoehe := nzeilen_liste * 17 + 130   ;*** Symbolleisten und Reserve berücksichtigen
  soll_x := maus_x - 10                    ;*** Fensterbeginn etwas links vor der Maus
  soll_y := maus_y - 110                   ;*** Fensterbeginn oben etwas über der Maus
  IF (soll_hoehe < 200)                   ;*** Fenster nicht zu niedrig
    soll_hoehe := 200   
  IF soll_x < 1280                         ;*** Fenster soll auf linken Bildschirm
    {
    IF (soll_hoehe > 750)                  ;*** Fenster nicht zu hoch
      soll_hoehe := 750 
    IF (soll_y + soll_hoehe > 790)         ;*** Fenster nicht unten überlappen
      soll_y := 790 - soll_hoehe
    IF (soll_x + soll_breite > 1270)       ;*** Fenster nicht rechts überlappen
      soll_x := 1270 - soll_breite
    }
  ELSE                                     ;*** Fenster soll auf rechten Bildschirm
    {
    IF (soll_hoehe > 1000)                 ;*** Fenster nicht zu hoch
      soll_hoehe := 1000   
    IF (soll_y + soll_hoehe > 917)         ;*** Fenster nicht unten überlappen
      soll_y := 917 - soll_hoehe
    IF (soll_x + soll_breite > 2550)       ;*** Fenster nicht rechts überlappen
      soll_x := 2550 - soll_breite
     }
  WINMOVE,  A, , soll_x, soll_y, soll_breite, soll_hoehe
  }
ELSE                         ;*** anderes Fenster optimieren
  {
  IFLESS, maus_x, 1280, WINMOVE, A, , 150, 50, 1120, 740
  ELSE WINMOVE, A, , 1300, -60, 1200, 950 
  }
RETURN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RobOtter



Anmeldedatum: 21.03.2006
Beiträge: 42
Wohnort: Darmstadt

BeitragVerfasst am: Mo März 27, 2006 9:49 am    Titel: Antworten mit Zitat

Hi!

Ich habe das ganze jetzt mal als ac´tivAid-Erweiterung umgesetzt und an Tekl geschickt. Bis auf die Positionierung am Mauszeiger sind alle Deine Funktionen (und ein paar Optionen mehr) enthalten.
Weil das hier ja aber kein activAid-Forum ist, poste ich die Sourcen hier nicht. Falls es Dich interessiert (ich weiß ja, dass Du activAid nicht einsetzt) und mir Deine Email-Adresse als PM schickst, maile ich Dir das Plugin gerne zu.

Viele Grüße,
Rob
_________________
Ich sag doch gar nichts, ich red ja nur...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
halweg



Anmeldedatum: 05.01.2006
Beiträge: 846
Wohnort: Dresden

BeitragVerfasst am: Di März 28, 2006 7:49 am    Titel: Antworten mit Zitat

Hallo Rob,

danke für das Skript. Ist schon beeindruckend, wie sich nur durch die professionelle Aufbereitung für einen breiten Nutzereinsatz die Codezeilenzahl bei fast identischer Funktionalität verzehnfacht (aus 59 Zeilen wurden 584). Und das scheint noch nicht mal alles zu sein (wenn ich das Skript starten will, fehlt eine Funktion func_GetMonitorNumber() - bestimmt irgendeine ac'tivAid Geschichte).

Ich hab diesen Weg (vom Funktionsmuster zur weitergebbaren Software) aber früher auch ein paar mal durchmachen dürften. Das ist ein hartes Stück Arbeit. Confused

Nun müsste der potentielle Nutzer nur noch eine Maustaste freihaben (aus meiner Sicht macht das das Skript erst richtig sinnvoll). Wär doch auch mal ne Idee: ein ac'tivAid Baukasten zur flexiblen Mausbenutzung Very Happy
(vier-Tasten-Maus - Einstiegsvoraussetzung Wink )
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RobOtter



Anmeldedatum: 21.03.2006
Beiträge: 42
Wohnort: Darmstadt

BeitragVerfasst am: Di März 28, 2006 10:20 am    Titel: Antworten mit Zitat

halweg hat Folgendes geschrieben:
Und das scheint noch nicht mal alles zu sein (wenn ich das Skript starten will, fehlt eine Funktion func_GetMonitorNumber() - bestimmt irgendeine ac'tivAid Geschichte).


Ja, das ist eine aA-Funktion. Vermutlich musst Du ein Update auf die aktuelle Version durchführen (über den Konfig-Dialog von aA)

Zitat:
Nun müsste der potentielle Nutzer nur noch eine Maustaste freihaben (aus meiner Sicht macht das das Skript erst richtig sinnvoll). Wär doch auch mal ne Idee: ein ac'tivAid Baukasten zur flexiblen Mausbenutzung Very Happy
(vier-Tasten-Maus - Einstiegsvoraussetzung Wink )


Ja, da geb ich Dir Recht... Ich habe das bei mir so geregelt, dass meine Maus auf Taste 5 eine Tastenkombination sendet - genau die, die für die Erweiterung eingestellt ist. Aber das hat natürlich nix mehr mit aA zu tun...

Ich habe als Antwort von Tekl auch schon ein paar Anregungen bekommen, um das Ding noch weiter konfigurierbar zu machen. Damit wird die Zeilenzahl noch mal steigen Smile
Programmieren wäre so schön, wenn die lästigen User nicht wären Very Happy
_________________
Ich sag doch gar nichts, ich red ja nur...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
halweg



Anmeldedatum: 05.01.2006
Beiträge: 846
Wohnort: Dresden

BeitragVerfasst am: Di März 28, 2006 11:27 am    Titel: Antworten mit Zitat

RobOtter hat Folgendes geschrieben:
Programmieren wäre so schön, wenn die lästigen User nicht wären Very Happy

... und die Softwareprüfer Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
halweg



Anmeldedatum: 05.01.2006
Beiträge: 846
Wohnort: Dresden

BeitragVerfasst am: Di März 28, 2006 2:02 pm    Titel: Antworten mit Zitat

RobOtter hat Folgendes geschrieben:
Ja, da geb ich Dir Recht... Ich habe das bei mir so geregelt, dass meine Maus auf Taste 5 eine Tastenkombination sendet - genau die, die für die Erweiterung eingestellt ist.

Mir fällt auf, dass du die erweiterten Maustasten auch über eine eingestellte Tastenkombination abfängst. Bei mir (Intellipoint Treiber von Microsoft) funktioniert es auch nur so. Nix mit XButton usw. Sad
Allerdings hab ich es inzwischen hinbekommen, dass ich die Extra Tasten auch mit Mehrfachklick und Dauerklick per AHK ausgewertet bekomme. So hat meine Daumentaste inzwischen 5 Fensterfunktionen (Schließen, Speichern, Optimieren, Nicht Speichern, ...) Very Happy Die ist viel zu schade, um nur für den Explorer da zu sein. Wink
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