Autor |
Beitrag |
Silas
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Di 25.03.08 18:06
HoverScroll
HoverScroll ist ein Tool, dass das Scrollverhalten unter Windows verbessert (bzw. verbessern soll  ). 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): - Die Konsole scrollt immer, egal wo die Maus hinzeigt
- Bei einigen Anwendungen kommt es vor, wenn sie sich im Vordergrund befinden, dass das zu scrollende Fenster doppelt so schnell scrollt (AFAIK bei VCL-Fenstern)
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  ), 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= www.silas-online.de/...overScrollSetup.exe]Download (Setup-EXE, 529 KB)[/url]
[url= www.silas-online.de/...overScrollSource.7z]Sourcen (7-Zip-Archiv, 229 KB)[/url]
[url= www.silas-online.de/...verScrollSource.zip]Sourcen (Zip-Archiv, 338 KB)[/url]
[url= silas-online.de/down...-windows/33-hscroll]Artikel auf meiner Website[/url]
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
Zuletzt bearbeitet von Silas am Mi 14.05.08 10:47, insgesamt 6-mal bearbeitet
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Silas 
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Mi 26.03.08 11:31
BenBE 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.
BenBE 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?
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 26.03.08 11:38
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Silas 
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Mi 26.03.08 11:45
BenBE hat folgendes geschrieben: | Silas hat folgendes geschrieben: | BenBE 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.
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?
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Silas 
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Mi 26.03.08 15:57
BenBE 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.ä.)?
BenBE 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.
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
huuuuuh
      
Beiträge: 665
Erhaltene Danke: 19
win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
|
Verfasst: 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
      
Beiträge: 665
Erhaltene Danke: 19
win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
|
Verfasst: Mi 26.03.08 22:20
Silas hat folgendes geschrieben: | - Die Konsole scrollt immer, egal wo die Maus hinzeigt
|
nur die konsole scrollt
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Silas 
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Mi 26.03.08 22:30
huuuuuh 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  . Vielleicht wenn ich das ganze mit einem Mod-Key kombiniere...
huuuuuh hat folgendes geschrieben: | Silas 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
BenBE 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.
BenBE 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!
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
Silas 
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: 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.
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mi 26.03.08 23:47
Funktioniert. Coole Idee und gute Umsetzung 
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
huuuuuh
      
Beiträge: 665
Erhaltene Danke: 19
win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
|
Verfasst: 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
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: 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 
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Do 27.03.08 15:15
huuuuuh 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.)
bakachan hat folgendes geschrieben: | aber Silas hat ja schon angekündigt das das noch kommt |
Ja, das hat er  . 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.
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: 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 
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Do 27.03.08 22:54
GTA-Place hat folgendes geschrieben: | Funktioniert. Coole Idee und gute Umsetzung  |
Danke!
bakachan 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  .
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?
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 28.03.08 00:05
Tolles Programm!
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 
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: So 30.03.08 20:23
Yogu hat folgendes geschrieben: | Tolles Programm!  |
Danke!
Edit: Yogu 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?
Yogu 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 Log dateien
[-] 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?
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
|