Entwickler-Ecke

Open Source Projekte - HoverScroll


Silas - Di 25.03.08 18:06
Titel: HoverScroll
HoverScroll

HoverScroll ist ein Tool, dass das Scrollverhalten unter Windows verbessert (bzw. verbessern soll :wink: ). Im Normalfall scrollt immer das aktive Fenster und nicht das, über dem sich die Maus befindet, was für die Arbeit mit vielen Fenstern ein wenig Suboptimal ist.
Offen zugegeben ist die Idee für dieses Programm von der PC-Welt-Redaktion, die ihrer Zeitschrift ein solches Programm beigelegt haben. Dieses erstellt aber allen Ernstes für jede Scroll-Message einen eigenen Thread und quittiert bei mehr als 70 Messages pro Sekunde seinen Dienst. (Ich besitze eine Maus mit freilaufendem Scrollrad, weswegen das sehr häufig eintritt.)

Mein Programm läuft im Hintergrund und installiert einen WH_GETMESSAGE-Hook auf die WM_MOUSEWHEEL und ändert ggf. ihr Ziel, wodurch immer das Fenster gescrollt wird, auf das der Mauszeiger zeigt :).

Leider gibt es schon ein paar known Bugs (Bitte verzeiht sie mir, es ist mein erster Hook):
Ich habe es aber auf Herz und Nieren getestet, und kann sagen, dass es sich für den Dauerbetrieb eignet :).

Das Programm selber kommt als Installer (diesmal einer der funktioniert :oops: ), der HoverScroll auch gleich in den Autostart einträgt. Für die, die das nicht möchten, liegt das Programm inkl. der Hook-Dll den Sourcen bei.

Aktuelle Version: 2.3.0.7

[url=http://www.silas-online.de/download.php?file=HoverScrollSetup.exe]Download (Setup-EXE, 529 KB)[/url]
[url=http://www.silas-online.de/download.php?file=HoverScrollSource.7z]Sourcen (7-Zip-Archiv, 229 KB)[/url]
[url=http://www.silas-online.de/download.php?file=HoverScrollSource.zip]Sourcen (Zip-Archiv, 338 KB)[/url]
[url=http://silas-online.de/downloads/20-windows/33-hscroll]Artikel auf meiner Website[/url]


BenBE - Mi 26.03.08 11:20

Startet bei mir komplett ohne TrayIcon oder anderes Fenster ...

Funzt scheinbar bei meinem Notebook-Touchpad nicht (oder bedingt durch obig genannten Bug).


Silas - Mi 26.03.08 11:31

user profile iconBenBE hat folgendes geschrieben:
Startet bei mir komplett ohne TrayIcon oder anderes Fenster ...
Ein TrayIcon ist noch nicht implementiert (Steht aber auf der Todo-Liste), das Hauptfenster (ohne das ich ja wegen der Message-Queue nicht auskomme) wird versteckt gestartet.

user profile iconBenBE hat folgendes geschrieben:
Funzt scheinbar bei meinem Notebook-Touchpad nicht (oder bedingt durch obig genannten Bug).
Schau mal im Taskmanager nach, ob es als Prozess läuft. Wusste gar nicht, dass es Notebook-Touchpads mit Schrollmöglichkeit gibt?


BenBE - Mi 26.03.08 11:38

user profile iconSilas hat folgendes geschrieben:
user profile iconBenBE hat folgendes geschrieben:
Startet bei mir komplett ohne TrayIcon oder anderes Fenster ...
Ein TrayIcon ist noch nicht implementiert (Steht aber auf der Todo-Liste), das Hauptfenster (ohne das ich ja wegen der Message-Queue nicht auskomme) wird versteckt gestartet.

Zumindest für die Konfig wäre das nicht schlecht. Mit nem TrayIcon sollte das dann aber gehen ...

user profile iconSilas hat folgendes geschrieben:
user profile iconBenBE hat folgendes geschrieben:
Funzt scheinbar bei meinem Notebook-Touchpad nicht (oder bedingt durch obig genannten Bug).
Schau mal im Taskmanager nach, ob es als Prozess läuft. Wusste gar nicht, dass es Notebook-Touchpads mit Schrollmöglichkeit gibt?

Schon lange. Ist bei den Touchpads meist am rechten Rand. Meins hat sogar horizontales Scrollen mit drin (was aber eher nervig ist ...)


Silas - Mi 26.03.08 11:45

user profile iconBenBE hat folgendes geschrieben:
user profile iconSilas hat folgendes geschrieben:
user profile iconBenBE hat folgendes geschrieben:
Startet bei mir komplett ohne TrayIcon oder anderes Fenster ...
Ein TrayIcon ist noch nicht implementiert (Steht aber auf der Todo-Liste), das Hauptfenster (ohne das ich ja wegen der Message-Queue nicht auskomme) wird versteckt gestartet.

Zumindest für die Konfig wäre das nicht schlecht. Mit nem TrayIcon sollte das dann aber gehen ...
Gut, bis heut Abend hab ich das. :wink:

Welches Betriebssystem läuft bei dir? Bei mir unter XP und bei einem Freund unter Vista läufts einwandfrei.
Wie hast du's denn getestet? Öffne mal über deinem FF/IE ein Explorer-Fenster. Kannst du dann im FF-Fenster noch scrollen, wärend es inaktiv ist?


BenBE - Mi 26.03.08 15:30

Mein Notebook hat WinXP SP2 drauf, auch mit den letzten Patches.

Getestet hab ich's mit nem mIRC im Hintergrund und nem Explorer im Vordergrund. Wollte nicht.

Ach ja, n andrer Bug, der mir aufgefallen ist: Dein Programm lässt sich zwei mal starten. Solltest nen Single-Instnz-Schutz rein machen, damit Du nicht unnötig viele Hooks hast, die Messages verbiegen ;-)


Silas - Mi 26.03.08 15:57

user profile iconBenBE hat folgendes geschrieben:
Mein Notebook hat WinXP SP2 drauf, auch mit den letzten Patches. Getestet hab ich's mit nem mIRC im Hintergrund und nem Explorer im Vordergrund. Wollte nicht.
Komisch, bei mir funktionierts einwandfrei. Hast du irgend einen speziellen Maustreiber für dein Pad der z.B. Funktionen hinzufügt (Gesten o.ä.)?

user profile iconBenBE hat folgendes geschrieben:
Ach ja, n andrer Bug, der mir aufgefallen ist: Dein Programm lässt sich zwei mal starten. Solltest nen Single-Instnz-Schutz rein machen, damit Du nicht unnötig viele Hooks hast, die Messages verbiegen ;-)
Stimmt, habe ich übersehn. Gibts ebenfalls in der nächsten Version :).

Würde mich sehr freuen, wenn noch jemand anderes mein Programm testen und mir etwas Feedback geben würde, ob bzw. bei welchen Mäusen oder Pads es funktioniert und bei welchen nicht.


huuuuuh - Mi 26.03.08 22:12

also bei mir funktionierts
hab XP SP2 und desktop-pc und normale usb-maus
wär ganz schön wenn man einstellen könnte dass das programm das fenster, über dem sich der mauszeiger befindet, nach vorne holen würde


huuuuuh - Mi 26.03.08 22:20
Titel: Re: HoverScroll
user profile iconSilas hat folgendes geschrieben:
  • Die Konsole scrollt immer, egal wo die Maus hinzeigt

nur die konsole scrollt


BenBE - Mi 26.03.08 22:23

Ich hab's jetzt noch mal probiert, kann den Bug mit der Konsole bestätigen

Zum Touchpad: Scheint n eigener Treiber zu sein, der n bissl was umbiegt. Müsste das aber auch erst im Detail untersuchen. N Debug-Modus wäre dafür sicherlich von Vorteil, um zu sehen, was das Programm detektiert, Hookstatus, empfangene Messages, ... Und besagtes Tray-Icon.


Silas - Mi 26.03.08 22:30

user profile iconhuuuuuh hat folgendes geschrieben:
wär ganz schön wenn man einstellen könnte dass das programm das fenster, über dem sich der mauszeiger befindet, nach vorne holen würde
Beim scrollen? Ob das so günstig ist? Weil das aktuelle Fenseter landet eben dann im Hintergrund :wink: . Vielleicht wenn ich das ganze mit einem Mod-Key kombiniere...

user profile iconhuuuuuh hat folgendes geschrieben:
user profile iconSilas hat folgendes geschrieben:
  • Die Konsole scrollt immer, egal wo die Maus hinzeigt

nur die konsole scrollt
Ja, so hatte ich das gemeint, bloß ein bisschen ungünstig ausgedrückt :wink:

user profile iconBenBE hat folgendes geschrieben:
Ich hab's jetzt noch mal probiert, kann den Bug mit der Konsole bestätigen
Die Konsole ein "besonderes" Fenster, oder? Sie kann ja z.B. keine Styles annehmen.

user profile iconBenBE hat folgendes geschrieben:
N Debug-Modus wäre dafür sicherlich von Vorteil, um zu sehen, was das Programm detektiert, Hookstatus, empfangene Messages, ... Und besagtes Tray-Icon.
Vielleicht bau ich einen kleinen Logger für die HookProc ein.


Kann sein, dass ich die neue Version heut nicht mehr fertig bring, werd mich aber beeilen :)
Auf jeden Fall: Vielen Dank fürs Testen!


Silas - Mi 26.03.08 23:19

Neue Version 1.1.0.2
[+] Das Programm besitzt jetzt ein TrayIcon
[*] Die EXE lässt sich nur noch einmal starten

Hooken kann das Programm sowieso nur einmal, da meine DLL nur ein Handle speichert und ein "drüberhooken" nicht erlaubt. Schöner ist es so trotzdem :) .

Ein Einstellungs- und Beendmenü sowie ein Logger kommen morgen, es gibt noch Probleme beim unhooken mit dem Explorer (s.o.). Bis da hin ist das Icon einfach einmal eine Anzeige, dass das Programm läuft.

Edit: Ihr könnt die neue Version einfach drüberinstallieren, wenn ihr vorher HoverScroll unter "Prozesse" im Task-Manager beendet.


GTA-Place - Mi 26.03.08 23:47

Funktioniert. Coole Idee und gute Umsetzung :)


huuuuuh - Do 27.03.08 11:23

mal ne frage: wie wichtig ist die dll? ich hab das programm vorher beendet, auf die alte dll war trotzdem der zugriff verweigert, code -5
edit: fänds gut wenn man das programm über den trayicon beenden könnte


bakachan - Do 27.03.08 11:34

hab das gleiche Problem wie huuuuuh zugriff auf die dll verweigert kommt halt davon das man das programm nicht regulär beenden kann

aber Silas hat ja schon angekündigt das das noch kommt


Silas - Do 27.03.08 15:15

user profile iconhuuuuuh hat folgendes geschrieben:
mal ne frage: wie wichtig ist die dll? ich hab das programm vorher beendet, auf die alte dll war trotzdem der zugriff verweigert, code -5
edit: fänds gut wenn man das programm über den trayicon beenden könnte
Die DLL ist das eigentliche Programm, weil Hooks generell in DLLs ausgelagert werden müssen, dass jedes Programm auf den Code zugriff hat.
Wenn du das Programm gekillt hast, kannst du die DLL umbenennen und anschließend löschen, weil sie im Speicher verbleibt (Ich weiß dass das ganz böse ist aber bei mir ist anschließend nichts abgestürzt.)

user profile iconbakachan hat folgendes geschrieben:
aber Silas hat ja schon angekündigt das das noch kommt
Ja, das hat er :D . Sitz schon davor.


An dieser Stelle eine Frage an alle Hook-Pros: Wie kann ich einen WH_GETMESSAGE-Hook unhooken, ohne dass mir der Explorer abstürzt? Ein einfaches UnhookWindowsHookEx genügt anscheinend nicht.


bakachan - Do 27.03.08 15:25

bei mir hats immer ein einfaches

C#-Quelltext
1:
2:
[DllImport("user32.dll")]
        private static extern bool UnhookWindowsHookEx(IntPtr hhk);

getan.


Silas - Do 27.03.08 22:54

user profile iconGTA-Place hat folgendes geschrieben:
Funktioniert. Coole Idee und gute Umsetzung :)
Danke!

user profile iconbakachan hat folgendes geschrieben:
bei mir hats immer ein einfaches

C#-Quelltext
1:
2:
[DllImport("user32.dll")]
        private static extern bool UnhookWindowsHookEx(IntPtr hhk);

getan.
Funktioniert jetzt, keine Ahnung durch welche Änderung. Wahrscheinlich mal wieder die berühmte Compilermagic :wink: .


Und weil ichs euch ja für heut versprochen hab:

Neue Version 1.9.2.4 (alpha zu 2.0)
[+] Popupmenü dem Trayicon hinzugefügt
[+] Möglichkeit das Programm zu beenden und die DLL damit freizugeben
[+] Info-Form hinzugefügt
[+] Einstellungs-Form hinzugefügt
[+] Logger für die Hook-Proc hinzugefügt*
[+] Log-Display-Form hinzugefügt**

* Funktioniert im Moment nur teilweise, er scheint nur zu loggen wenn HoverScroll im Vordergrund ist (Das ist mir ein Rätsel, vielleicht fällt mir (oder euch) aber noch was ein.)
** Sie erscheint im Popupmenü wenn ihr unter Einstellungen den Logger aktiviert habt.


BTW: Kann jemand von euch den Doppel-Scroll-Bug (siehe 1.Posting) reproduzieren?


Yogu - Fr 28.03.08 00:05

Tolles Programm! :zustimm:

Ich verwende Windows 2000, da klappt auch alles, bis auf den bekannten Bug mit der Konsole. Ich fände es aber schön, wenn du noch 24-Bit-Symbole einbauen könntest; Windows 2000 unterstützt keine Alpha-Kanäle und es gibt unschöne schwarze Ränder. Ganz toll wär auch noch ein 16Bit-Symbol für den Tray, da gehen nämlich nicht mal 24 Bit. Ist aber nicht so wichtig.


Silas - So 30.03.08 20:23

user profile iconYogu hat folgendes geschrieben:
Tolles Programm! :zustimm:
Danke! :)

Edit:
user profile iconYogu hat folgendes geschrieben:
Ich verwende Windows 2000, da klappt auch alles, bis auf den bekannten Bug mit der Konsole.
Wie sieht es mit dem Doppel-Scroll-Bug aus? Kannst du den reproduzieren?

user profile iconYogu hat folgendes geschrieben:
Ich fände es aber schön, wenn du noch 24-Bit-Symbole einbauen könntest; Windows 2000 unterstützt keine Alpha-Kanäle und es gibt unschöne schwarze Ränder.
In der neuen Version gibts alles von 4 bis 32 Bit und auch 24x24-Symbole :) .


Neue Version 1.9.5.8 (2.0 Alpha 2)
[*] Der Logger schreibt nun Logdateien
[-] Aus diesem grund wurde auch das Logfenster wieder entfernt
[+] Es sind nun auch 24x24- sowie 8-Bit und 4-Bit-Symbole vorhanden
[*] Ein Logger-E/A-Bug wurde gefixt
[*] Für das Trayicon wird nun nicht mehr Borlands TTrayIcon verwendet, da dieses Probleme
beim Systemstart macht

Die Sache mit dem Logger konnte ich leider immer noch nicht fixen, gibt es da eine einfachere/elegantere Möglichkeit als MMF?


BenBE - So 30.03.08 20:31

Einige Programme (gesehen bei Trillian) reagieren auf das Scrollen gar nicht, solange HoverScroll gestartet ist (getestet mit Win2K, Trillian 3.1). Sobald ich HoverScroll wieder beende, funktioniert das Scrollen in Trillian wieder.


GTA-Place - So 30.03.08 20:38

Ist mir auch aufgefallen, aber ich dachte, dass das normal sei bei Trillian :lol:


BenBE - So 30.03.08 20:51

Jain. Soweit ich das mitbekommen habe, muss man bei Trillian erst in das Nachrichten-Fenster klicken, damit das mit dem Scrollen normal funzt (d.h. das Log-Fenster muss den Fokus "haben").


Yogu - So 30.03.08 20:57

user profile iconSilas hat folgendes geschrieben:
Wie sieht es mit dem Doppel-Scroll-Bug aus? Kannst du den reproduzieren?

Weder bei Firefox noch beim Windows Explorer oder Delphi 7. Mehr Programme hab ich grad nicht offen ;)

user profile iconSilas hat folgendes geschrieben:
In der neuen Version gibts alles von 4 bis 32 Bit und auch 24x24-Symbole :) .

Wie sieht's mit 24 Bit aus? :mrgreen: (Falls du noch Lust hast, mit IcoFX [http://icofx.softonic.de/] geht das Umwandeln relativ schnell und schön (Alpha-Kanäle entfernt er schön gleichmäßig, dass nachher (fast) nichts eckig aussieht).

Noch ein paar Vorschläge für neue Versionen:


Silas - So 30.03.08 21:11

user profile iconBenBE hat folgendes geschrieben:
Einige Programme (gesehen bei Trillian) reagieren auf das Scrollen gar nicht, solange HoverScroll gestartet ist (getestet mit Win2K, Trillian 3.1). Sobald ich HoverScroll wieder beende, funktioniert das Scrollen in Trillian wieder.
user profile iconGTA-Place hat folgendes geschrieben:
Ist mir auch aufgefallen, aber ich dachte, dass das normal sei bei Trillian :lol:
Ich werde mir das morgen mal ansehen, heute hab ich leider keine Zeit mehr. Funktioniert das Ganze denn mit dem PC-Welt-Tool [http://www.pcwelt.de/downloads/pcwelt_tools/tools/139375/index.html] dafür?

user profile iconYogu hat folgendes geschrieben:
user profile iconSilas hat folgendes geschrieben:
Wie sieht es mit dem Doppel-Scroll-Bug aus? Kannst du den reproduzieren?
Weder bei Firefox noch beim Windows Explorer oder Delphi 7. Mehr Programme hab ich grad nicht offen ;)
Ich wüsste jetzt konkret RAD Studio 2007 und Gaijins Plainedit, scheint also irgentwie mit der VCL zusammenzuhängen :nixweiss:

user profile iconYogu hat folgendes geschrieben:
user profile iconSilas hat folgendes geschrieben:
In der neuen Version gibts alles von 4 bis 32 Bit und auch 24x24-Symbole :) .
Wie sieht's mit 24 Bit aus? :mrgreen:
Ist bereits drin, 24 is auch zwischen 4 und 32 :wink: .

user profile iconYogu hat folgendes geschrieben:
Falls du noch Lust hast, mit IcoFX [http://icofx.softonic.de/] geht das Umwandeln relativ schnell und schön
Damit arbeite ich eh schon :wink: .

user profile iconYogu hat folgendes geschrieben:
  • Schnelles Aktivieren / Deaktivieren im Kontextmenü
  • Autostart-Einstellung im Einstellungs-Fenster
Mach ich. :)

user profile iconYogu hat folgendes geschrieben:
  • Warum das Log-Fenster entfernen? Vielleicht könnte es noch etwas ausgebaut werden
Keine Angst, ich hab die Unit schon noch. Bloß bei Logdateien macht das im fertigen Programm keinen Sinn.

user profile iconYogu hat folgendes geschrieben:
  • Wenn die Maus über keinem WinControl ist, könnte doch das fokussierte Fenster gescrollt werden, oder? Das fände ich sehr nützlich.
Werd ich als Option hinzufügen.

user profile iconYogu hat folgendes geschrieben:
  • Das Icon im Info-Dialog hat noch keine Win2K-Alternative :mrgreen:
Oh, ich dachte die VCL würde das Symbol gleich beim Hinzufügen auf den Hintergrund zeichnen. Wird auch noch gemacht :wink: .


Yogu - So 30.03.08 21:33

user profile iconSilas hat folgendes geschrieben:
user profile iconYogu hat folgendes geschrieben:
user profile iconSilas hat folgendes geschrieben:
Wie sieht es mit dem Doppel-Scroll-Bug aus? Kannst du den reproduzieren?
Weder bei Firefox noch beim Windows Explorer oder Delphi 7. Mehr Programme hab ich grad nicht offen ;)
Ich wüsste jetzt konkret RAD Studio 2007 und Gaijins Plainedit, scheint also irgentwie mit der VCL zusammenzuhängen :nixweiss:

Ich verwende Windows 2000, vielleicht macht das einen Unterschied.

user profile iconSilas hat folgendes geschrieben:
user profile iconYogu hat folgendes geschrieben:
Wie sieht's mit 24 Bit aus? :mrgreen:
Ist bereits drin, 24 is auch zwischen 4 und 32 :wink: .

Ups, hab ich übersehen :D


Silas - Mi 02.04.08 17:03

So, ich hab mir die Sache mit Trillian mal angesehen, und kann den Fehler repoduzieren. Das Problem besteht in dieser Codezeile der HookProc:

Delphi-Quelltext
1:
lParam^.message := WM_NULL;                    
lParam ist ein Zeiger auf die Message-Strukutur der ursprünglichen Nachricht.

Wenn ich sie weglasse, funktioniert das Scrollen mit Trillian problemlos, auch bei anderen Fenstern im Vordergrund. Anscheinend hat Trillian Probleme mit WM_NULL.

Die Frage ist daher jetzt: Gibt es eine andere Möglichkeit, die ankommende Message zu verwerfen, als den Message-Code auf WM_NULL zu setzen?


BenBE - Mi 02.04.08 20:17

Gab da glaube 2 Möglichkeitn:

1. Hook muss False zurückliefern (dann bricht die Nachrichtenbehandlung ab)

2. Du veränderst den Nachrichten-Inhalt so, dass du immer noch eine Hover-Nachricht erzeugst, aber der Inhalt gleichbedeutend mit einem NOP ist.

Ach ja: Wie sieht es mit dem "Standard-Verhalten wenn über keinem scrollbaren Fenster"-Verhalten aus?


Yogu - Mi 02.04.08 20:38

user profile iconBenBE hat folgendes geschrieben:
Wie sieht es mit dem "Standard-Verhalten wenn über keinem scrollbaren Fenster"-Verhalten aus?

Ich hab schon was in der Richtung gefragt:

user profile iconSilas hat folgendes geschrieben:
user profile iconYogu hat folgendes geschrieben:
  • Wenn die Maus über keinem WinControl ist, könnte doch das fokussierte Fenster gescrollt werden, oder? Das fände ich sehr nützlich.
Werd ich als Option hinzufügen.


Silas - Mi 02.04.08 21:06

user profile iconBenBE hat folgendes geschrieben:
1. Hook muss False zurückliefern (dann bricht die Nachrichtenbehandlung ab)
Du meinst Result := 0? Das erfolgt bei Veränderung der Nachricht sowieso.

user profile iconBenBE hat folgendes geschrieben:
2. Du veränderst den Nachrichten-Inhalt so, dass du immer noch eine Hover-Nachricht erzeugst, aber der Inhalt gleichbedeutend mit einem NOP ist.
Ich denke, du meinst eine Scroll-Nachricht, oder? :wink: Ich habe Testweise einmal wParam (das bei WM_MOUSEWHEEL die Scrollweite sowie die Mod-Keys repräsentiert) auf 0 gesetzt, was das eigenartige Ergebnis mit sich gebracht hat, dass sich Trillian nun, wenn es den Fokus hat, in eine Richtung (nach unten) scrollen lässt, in die andere aber nicht :shock: .

user profile iconBenBE hat folgendes geschrieben:
Ach ja: Wie sieht es mit dem "Standard-Verhalten wenn über keinem scrollbaren Fenster"-Verhalten aus?
Wo du mich gerade dran erinnerst: Wie erkenne ich das, ob ein Fenster scrollbar ist? Gibts dazu eine Funktion / Eigenschaft oder muss ich mit White- bzw. Blacklists arbeiten?


BenBE - Mi 02.04.08 21:25

Wüsste ich jetzt auf Anhieb nicht ...

Konsultiere da mal das MSDN ... Müsste da theoretisch ein Flag für in den Window-Settings geben.

Alternativ kannst Du mal schauen, ob man die Viewports abfragen kann; daran sollte das auch erkennbar sein ...


Silas - So 06.04.08 16:33

So, da ist sie (tut mir leid, dass es so lange gedauert hat):

Neue Version 2.2.3.7
[+] Schnelles (De)Aktivieren des Hooks ist nun möglich
[+] Autostart-Einstellung lässt sich über "Einstellungen" konfigurieren
[*] Problem mit Trillian durch ein kleines Workaround gefixt
[*] Für das Info-Symbol gibt es nun auch 4, 8, sowie 24-Bit-Symbole
[-] Der Logger wurde wegen zu großem Aufwand bezgl. DLLs entfernt


@Yogu: In Ordnung so?

Das Trillian-Workaround lässt nun das Trillian-Chatfenster einfach nicht mehr als Zielfenster zu. Das bedeutet natürlich auch, das man in Trillian nicht scrollen kann, wenn es nicht im Vordergrund ist.

Den Logger habe ich gestrichen, weil der Log-Code länger geworden wäre als das ganze Programm, und das ist ja nicht der Sinn der Sache.
Als Ersatz habe ich ein kleines Tool [http://www.silas-online.de/media/user/downloads/WindowPropertiesChecker.zip] geschrieben, das Informationen über das Fenster ausgibt, über dem sich der Mauszeiger gerade befindet. Wenn ihr ein noch ein Fenster mit dem Trillian-Fehler findet, schickt mir einfach den Klassennamen und ich füg ihn der Blacklist hinzu.

Wegen dem Standardverhalten über nichtscrollbaren Fenstern: Es gäbe die Möglichkeit, das Verhalten nach dem vorhandensein von Scrollbars festzulegen. Das Problem wäre allerdings, dass ich nicht feststellen kann, ob ein Programm die WM_MOUSEWHEEL anderweitig abfrägt, was z.B. bei Spielen fatal wäre.
Beim Scrollen über einem nicht-WinControl: Das einzige, wo es sich realisieren lassen würde, wäre der Desktop, und der besitzt die Explorer-Fensterklasse.


Yogu - So 06.04.08 17:29

user profile iconSilas hat folgendes geschrieben:
[+] Schnelles (De)Aktivieren des Hooks ist nun möglich

Das ist gut. Aber ich hätte noch einen Wunsch: Könnte sich das Trayicon evtl. ändern, wenn das Programm deaktiviert wird? Ich denke da an eine rote/grüne Maus, oder ein Kreuz, ein Verbotsschild oder so etwas ähnliches. Auch noch sinnvoll wäre eine Änderung des Hints.

user profile iconSilas hat folgendes geschrieben:
[+] Autostart-Einstellung lässt sich über "Einstellungen" konfigurieren

Super :zustimm:

user profile iconSilas hat folgendes geschrieben:
[*] Für das Info-Symbol gibt es nun auch 4, 8, sowie 24-Bit-Symbole

Das bringt bei Delphi leider nix. Es wird einfach immer das beste genommen - egal, ob es klappt. Die schwarzen Ränder sind immer noch da. Vielleicht könntest du einfach ein PNG nehmen - da klappt die Transparenz immer. Und es sieht dann auch bei 2000 schön geglättet aus :D

Grüße,
Yogu


Silas - So 06.04.08 20:44

Neue Version 2.3.0.6
[*] Info-Icon ist nur noch als 24-Bit-Variante vorhanden
[+] Beim (de)aktivieren wird nun das Trayicon und der Hint verändert


user profile iconYogu hat folgendes geschrieben:
Das ist gut. Aber ich hätte noch einen Wunsch: Könnte sich das Trayicon evtl. ändern, wenn das Programm deaktiviert wird? Auch noch sinnvoll wäre eine Änderung des Hints.
Ist jetzt drin :) . Ich hab im deaktivierten Zustand einfach ein Kleines Verbotsschild neben die Maus gesetzt (Ich hoffe es ist euch nicht zu klein).

user profile iconYogu hat folgendes geschrieben:
Und es sieht dann auch bei 2000 schön geglättet aus :D
Oje. :D In Ordnung, ich hab jetzt eine auf das Standardgrau "Vorgezeichnete" Version genommen, weil ich wegen der Open-Source-Sache keine Kompos einbauen wollte. Wehe, mir kommt jetzt einer mit einem grünen Fensterstyle :twisted: .


Yogu - So 06.04.08 21:31

user profile iconSilas hat folgendes geschrieben:
Beim (de)aktivieren wird nun das Trayicon und der Hint verändert

Schön. Nur wo bleibt das 4 Bit-Symbol? Sorry, aber es sieht so echt nicht schön aus bei mir. Aber sonst ist es gut - das Zeichen ist eigentlich genau richtig.


Silas - Mo 07.04.08 15:14

user profile iconYogu hat folgendes geschrieben:
Schön. Nur wo bleibt das 4 Bit-Symbol? Sorry, aber es sieht so echt nicht schön aus bei mir. Aber sonst ist es gut - das Zeichen ist eigentlich genau richtig.

Oh, tut mir leid, hatte ich nach dem erstellen des "Deaktiviert"-Icons vergessen wieder hinzuzufügen :autsch: .
Ist jetzt gefixt (2.3.0.7).

Wie sieht es mit dem Info-Symbol aus? Ist das jetzt in Ordnung so (auch bzgl. dem Schatten usw.)?


BenBE - Mo 07.04.08 15:52

Kleiner Feature-Wunsch: Könntest Du schauen, ob Du das hinbekommst, das Tab-Leisten wie beim FF, die horizontal scrollen, beim betätigen des Mausrades auch mit gescrollt werden?

Brauch das für WinAVR, da ich dort häufig haufenweise Fenster aufhab und die IDE keine mehrzeilige Tab-Leiste unterstützt ... Da ist das sonst mit dem Aufrufen von Tags etwas Kacke ...


Silas - Mo 07.04.08 16:04

user profile iconBenBE hat folgendes geschrieben:
Kleiner Feature-Wunsch: Könntest Du schauen, ob Du das hinbekommst, das Tab-Leisten wie beim FF, die horizontal scrollen, beim betätigen des Mausrades auch mit gescrollt werden?

Meinst du allgemein horizontales Scrollen?


Yogu - Mo 07.04.08 16:10

user profile iconSilas hat folgendes geschrieben:
Ist jetzt gefixt (2.3.0.7).

Super :D

user profile iconSilas hat folgendes geschrieben:
ich hab jetzt eine auf das Standardgrau "Vorgezeichnete" Version genommen, weil ich wegen der Open-Source-Sache keine Kompos einbauen wollte.

Sieht ganz gut aus.

user profile iconSilas hat folgendes geschrieben:
Wehe, mir kommt jetzt einer mit einem grünen Fensterstyle :twisted: .

Mein Grau ist heller als deins :mrgreen:

Man sieht es aber kaum. Ist schon in Ordnung so. Und ich will jetzt noch mal ganz ausdrücklich sagen, dass ich dein Programm richtig toll finde und es auch sehr oft brauchen kann. Dass das hier nicht so aussieht, als ob ich nur meckern würde ;)


BenBE - Mo 07.04.08 16:31

user profile iconSilas hat folgendes geschrieben:
user profile iconBenBE hat folgendes geschrieben:
Kleiner Feature-Wunsch: Könntest Du schauen, ob Du das hinbekommst, das Tab-Leisten wie beim FF, die horizontal scrollen, beim betätigen des Mausrades auch mit gescrollt werden?

Meinst du allgemein horizontales Scrollen?


Jain, wäre nice2have, brauch ich direkt jetzt aber nicht ...

Ich mein was andres:
Wenn Du beim Firefox die Tableiste offen hast und dort ganz viele Tabs offen sind, erweitert der FF die Tableiste doch rechts mit den Pfeilen. Wenn Du über der Tableiste bist, kannst Du durch Auf\Ab-Scrollen nach Links\Rechts in der Leiste navigieren.

Dieses Verhalten bräuchte ich auch für die Standard-TabControl der WinAPI, weil ich wie oben erwähnt bei WinAVR genau an dieser Stelle nicht wie im FF möglich scrollen kann, was ziemlich nervt ;-)


Silas - Mo 07.04.08 16:47

user profile iconYogu hat folgendes geschrieben:
user profile iconSilas hat folgendes geschrieben:
Wehe, mir kommt jetzt einer mit einem grünen Fensterstyle :twisted: .

Mein Grau ist heller als deins :mrgreen:
:bawling: :autsch: :D


user profile iconBenBE hat folgendes geschrieben:
Jain, wäre nice2have, brauch ich direkt jetzt aber nicht ...
Ich fügs einfach mal ein, ist ja nur eine 2. Message.

user profile iconBenBE hat folgendes geschrieben:
Ich mein was andres:
Wenn Du beim Firefox die Tableiste offen hast und dort ganz viele Tabs offen sind, erweitert der FF die Tableiste doch rechts mit den Pfeilen. Wenn Du über der Tableiste bist, kannst Du durch Auf\Ab-Scrollen nach Links\Rechts in der Leiste navigieren.

Dieses Verhalten bräuchte ich auch für die Standard-TabControl der WinAPI, weil ich wie oben erwähnt bei WinAVR genau an dieser Stelle nicht wie im FF möglich scrollen kann, was ziemlich nervt ;-)
Ich versuch's mal, kann aber nichts versprechen. In visueller Programmierung auf API-Ebene bin ich leider nicht sonderlich erfahren. :nixweiss:


BenBE - Mo 07.04.08 20:05

user profile iconSilas hat folgendes geschrieben:
user profile iconYogu hat folgendes geschrieben:
user profile iconSilas hat folgendes geschrieben:
Wehe, mir kommt jetzt einer mit einem grünen Fensterstyle :twisted: .

Mein Grau ist heller als deins :mrgreen:
:bawling: :autsch: :D


user profile iconBenBE hat folgendes geschrieben:
Jain, wäre nice2have, brauch ich direkt jetzt aber nicht ...
Ich fügs einfach mal ein, ist ja nur eine 2. Message.

k, klingt gut ;-)

user profile iconSilas hat folgendes geschrieben:
user profile iconBenBE hat folgendes geschrieben:
Ich mein was andres:
Wenn Du beim Firefox die Tableiste offen hast und dort ganz viele Tabs offen sind, erweitert der FF die Tableiste doch rechts mit den Pfeilen. Wenn Du über der Tableiste bist, kannst Du durch Auf\Ab-Scrollen nach Links\Rechts in der Leiste navigieren.

Dieses Verhalten bräuchte ich auch für die Standard-TabControl der WinAPI, weil ich wie oben erwähnt bei WinAVR genau an dieser Stelle nicht wie im FF möglich scrollen kann, was ziemlich nervt ;-)
Ich versuch's mal, kann aber nichts versprechen. In visueller Programmierung auf API-Ebene bin ich leider nicht sonderlich erfahren. :nixweiss:

Ich nögel schon, wenn's nicht geht :mrgreen:

Ach ja: Setz das Teil bei mir in der Praktikumsstelle als Arbeitserleichterun ein, weil ich da auch häufig haufenweise Fenster mit Scrollbars bedienen muss. Da ist das Programm ne richtige Erleichterung, wenn man nicht ständig klicken muss ^^


BenBE - So 27.04.08 14:43

Ach ja, mal ne Feature-Request-Geschichte:
- Kannst Du schauen, ob sich Copy-on-Select implementieren lässt? Also wenn ich in nem beliebigen Textfeld Text markiere, dass der dann automatisch in die Zwischenablage eingefügt wird?
- Kannst Du auf die mittlere Maustaste (Drücken des Scrollrades) das Einfügen der Zwischenablage legen?

BenBE.


Silas - So 27.04.08 19:28

Moin,

Erstmal:
user profile iconBenBE hat folgendes geschrieben:
Ach ja: Setz das Teil bei mir in der Praktikumsstelle als Arbeitserleichterun ein, weil ich da auch häufig haufenweise Fenster mit Scrollbars bedienen muss. Da ist das Programm ne richtige Erleichterung, wenn man nicht ständig klicken muss ^^
Freut mich!


user profile iconBenBE hat folgendes geschrieben:
Ach ja, mal ne Feature-Request-Geschichte:
- Kannst Du schauen, ob sich Copy-on-Select implementieren lässt? Also wenn ich in nem beliebigen Textfeld Text markiere, dass der dann automatisch in die Zwischenablage eingefügt wird?
- Kannst Du auf die mittlere Maustaste (Drücken des Scrollrades) das Einfügen der Zwischenablage legen?
Sollte sich eigentlich beides implementieren lassen. Bis zur nächsten Version könnte es allerdings noch ein wenig dauern, da ich im Moment, was die Schule betrifft, ziemlich im Stress steck.

Wo ich mir das gerade so ansehe... Sieht aus, als müsste ich HoverScroll in HoverMatrix umbenennen :lol: