Autor |
Beitrag |
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Mo 10.03.08 20:34
OK, also neues Thema.
Liebe Delphi-Freunde!
Eure Hilfe hat mir weitergeholfen, wie überhaupt dieses Forum (und andere) - dafür noch einmal tausend Dank(s)!
Als kleines Dankeschön stelle ich hier die erste m.E. vorzeigbare Frühversion meines Programmes vor. Es läuft bei mir stabil und zeigt zumindest die grundsätzliche Funktionalität (mehr nicht). Einfach die .exe starten, belassen und dann in den Fenstern beobachten, was passiert (ist nicht immer gleich offensichtlich).
Bitte keine Verbesserungsvorschläge und keine Bugreports, ich weiß selbst, daß ich an diesem Programm noch etliches zu tun habe (Systray mit Icon und mit Menü mit einigen Optionen (welche Hooks, welche Fensterklassen, Autostart ja/nein, Deaktivierung ja/nein, Beendigung, auszuschließende Programme, vielleicht sogar mal als Dienst usw.)). Über Meinungen, daß dieses Programm grundsätzlich nützlich (oder auch völliger Mist) ist, würde ich mich aber natürlich schon freuen.
Die grundsätzliche Funktionalität stellt übrigens Windows seit einigen Versionen mit der Tastenkombination Strg + [+] (auf dem Ziffernblock) zur Verfügung. Nur ist das eben nur eine halbautomatische Variante. Meine vollautomatische (die sich aber auch nur dieser Tastenkombination bedient) hat Mikroweich bis heute nicht hinbekommen (stattdessen werden Mikroweichprogrammierer dazu verdonnert, Büroklammern auf dem Bildschirm tanzen zu lassen). Neuerdings, so meine Beobachtung, stellt Windows in Form der Vista-Version diese Automatik im Spaltenmenü zur Verfügung (also immerhin offiziell, kein inoffizieller Tip aus dem Internet mehr nötig), gilt dann aber auch nur für den Augenblick, nicht jedoch mehr beim Verzeichniswechsel, bei neuen Fenstern oder bei anderem Spaltenbreitenbedarf (neue Datei mit längerem Namen, Datei mit dem längsten Namen gelöscht etc.). Also, eine weiterhin eindeutig halbautomatische Angelegenheit, die mit ihren Mausklicks fast lästiger ist, als beide Hände zur Tastatur zu bewegen. Diese Lästigkeit, die mir seit Jahren sehr auf die Nerven geht (wie so vieles in Windows) gebar meine Programmidee, das vollautomatisch tun zu lassen. Ich habe auch noch nie ein Programm mit dieser Funktionalität im Internet entdeckt, vermutlich gibt es weltweit noch keines (was mich eigentlich wundert).
Soweit ich es bisher herausgefunden habe, sind es die Windowsklassen SysListView32 und TListView, die auf diese Tastenkombination mit dem gewünschten Effekt reagieren. Dazu ist es allerdings nötig, daß diese "weißen Flächen" auch direkt angeklickt werden; ein Klick auf die Titelzeile eines Fenster z.B. läßt zwar das Fenster aktivieren, nicht jedoch den automatischen Anpassungseffekt auslösen (zumindest nicht sicher, warum auch immer). Wenn ich jedoch statt des WH_CBT- den WH_Shell-Hook aktiviere, dann funktioniert die Anpassung nach kurzer Zeitverzögerung auch schon beim Aktivieren des Fenster über die z.B. die Titelzeile. Beim Aktivieren beider Hooks ist das Programm natürlich noch "aggressiver" in seiner Wirkung.
Ein Programm habe ich bereits gefunden, das ausgeschlossen werden muß: Bei eMule werden alle Spalten derart zusammengeschoben, daß man nichts mehr sieht. Das ist insofern doppelt merkwürdig: Emule enthält als "Hauptelement" auch ein SysListView32, das jedoch auf Strg + [+] nicht reagiert, dafür aber korrekterweise beim Doppelklick auf die Spaltentrenner oben auf die richtige Breite einstellt, statt viel zu eng zusammenzurücken.
Nette Grüße
Delphi-Laie
Edit: Habe es noch einmal untersucht. Der WH_Shell-Hook reagiert "aggressiver", mit diesem werden wenigstens die (zum Glück häufigeren) SysListView32 mit der o.g. Tastenkombination von allein, auch dann, wenn man nur auf die Titelzeile eines Fensters klickt, erreicht. Bei der Verwendung nur des "sanfteren" WH_CBT-Hooks (so ist es auch in meinem hochgelandenen Beispiel) muß evtl. auf die SysListView32 direkt geklickt werden - auf die (zum Glück selteneren) SysListView jedoch anscheinend immer.
Edit 2: Wieder erhebliche Veränderungen, deshalb inzwischen die (Beta-)Versionsnummer um 2 erhöht. Die beiden wichtigsten, auch optisch markantesten Veränderungen (neben vielen weiteren):
- Ermittlung der hinter den Fenstern stehenden Dateinamen nicht nur über Prozeßschnappschup (Routine geht auf Luckies WinInfo zurück), sondern alternativ auch über einen Modulschnappschuß möglich.
- Neben der Inklusiv- kann alternativ auch eine Exklusiv-Dateiliste erstellt und benutzt werden, die aber nicht so zuverlässig wie ersteres arbeitet und deshalb mehr Experimentalcharakter trägt.
Edit3: Entschuldigung, hatte die Laufwerk-C-Variante (die unter Vista ziemlich sicher nicht mehr funktioniert) versehentlich hochgeladen (eigentlich nur eine Experimentalversion für solche Temporärverzeichnisse, die nicht auf die Festplatte speichern oder deren Inhalt beim Herunterfahren gelöscht wird).
Edit4: Nochmals zwei Versionsnummern höher, nunmehr kann als vierte Auslösemethode auch ein Tastendruck (eine der F-Tasten) den Hotkey und damit die Skalierung auslösen, was jedoch nur halbautomatisch ist (ähnlich AutoHotKey), und die Dateilistentypen können separat zu-/abgeschaltet werden. Zudem habe ich noch tüchtig am Code gefeilt und dabei eine ganze Reihe Fehler ausgemerzt.
Edit5: Beta 18 zusätzlich mit optionalem Löschschutz für die Konfigurationsdateien, indem diese offengehalten werden, weil manche Systemreinigungsprogramme auch das Temp-Verzeichnis leeren, kleinen Fehlerkorrekturen und aufgeräumterem Quelltext.
Edit6: Dateinamenseingabeprozeduren verbessert.
Edit 7: Unterschiedliche Schriftgröße(n) der (beiden) Editfelder vereinheitlicht.
Edit 8: Fehler in der Timerprozedur entfernt.
Edit 9: Funktionen zur Ermittlung des Exe-Dateinamens etwas vereinfacht.
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von Delphi-Laie am Mi 15.12.10 14:28, insgesamt 13-mal bearbeitet
|
|
Delphi-Laie 
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: So 30.03.08 05:20
Liebe Delphianer!
Aus meinem Säugling ist inzwischen ein Kleinkind geworden.
Wem ständig die nicht angepaßten Spaltenbreiten in der Detailansicht in den "Windows" der gleichnamigen Betriebsprogrammreihe, konkret in den Explorerfenstern (aber auch in anderen, so z.B. Isobuster, WinRar) seit Win95 (oder sogar noch frühere Windows-Versionen? Kann mich jetzt aktuell nicht so genau entsinnen) auf die Nerven gehen, der kann nunmehr nach 13 Jahren endlich eine vollautomatische Lösung dieses Problems erhalten. Ich biete dazu meine nunmehr Alphaversion an. Noch ist das Programmfenster zu sehen, aber die eigentliche Funktionalität (der Programmzweck und sein wesentlicher Funktionsumfang) ist schon voll implementiert. Die letzten Schritte werden die Implementierung einer Trayfunktionalität sein. Dann wird natürlich auch das Fenster verschwinden und nur bei Bedarf aufrufbar sein. Das ist aber nach Einstellen der Optionen kaum noch nötig.
Wichtig: Alle Programme, die es betrifft, müssen explizit bei/in diesem Programm angemeldet werden, die Ausschlußfunktionalität (die mir eigentlich lieber gewesen wäre) hat nicht funktioniert.
Für die, die es interessiert: Methode 1 basiert auf dem CBT-, Methode 2 auf dem Shellhook (beide Hooks sind relevant für Fensterereignisse). Anhand der einzeln aktivierbaren Optionen werden das die Insider wiedererkennen. Es lassen sich sogar beide Hooks einschalten, was aber nicht nötig ist. Nebenbei habe ich auch einen weiteren Fehler in Windows aufgespürt, zumindest in Win 2000 (vertauschte Ereignisbezeichnungen). Reagieren tun auf dieses Programm übrigens SysListView32- und TListView-Childfenster; ob es noch mehr relevante ChildWindows-Klassen gibt, ist mir derzeit unbekannt.
Ich empfehle, die Hooks zunächst einzeln auszuprobieren und die Optionen versuchsweise nach und nach zuzuschalten (die wichtigsten sind wohl die Fenstererzeugungsereignisse). Kann sein, daß Methode 1 unter WinXP generell problematisch ist (Explorerabsturz, hatte ich zumindest in der Urversion schon bemerkt). Vielleicht läuft der Shellhook (Methode 2) dort stabil. Unter meinem Win2000 sind beide Hooks (ziemlich) unproblematisch aktivierbar. Methode 1 hatte ich schon unter ME getestet, lief dort auch stabil. Die Systemnähe der Hooks ist also aber insgesamt trotzdem heikel und hat ihren Preis in Form des Risikos der Instabilität. Außerdem reagiert das Programm manchmal oder sogar häufig nicht (wie gewünscht), die Hooks scheinen also ein teilweise nichtdeterminiertes Eigenleben zu führen.
Das Programm legt im Haupt-/Stammverzeichnis des Laufwerkes C zwei Datendateien an. Es gelang mir nicht, diese woanders ablegen zu können (relative Pfadadressierung, am besten natürlich dort, wo die beiden anderen Programme sich befinden), weil die GetDir-Prozedur in den Hookroutinen der DLL zu oft (nicht immer!) "danebengreift" (natürlich auch dann, wenn der korrekte Zugriff zwecks Dateneinlesung nötig ist). Es läßt sich natürlich abfangen, daß daraufhin das Programm abstürzt, die Funktion bleibt aber dennoch aus. Also die absolute Pfadadressierung und bei dieser den kleinsten gemeinsame Nennern (C:\) gewählt.
Der Acrobat Reader reagiert auf das Programm mit Zoom, aber den anzumelden ist ohnehin überflüssig. Ein Phänomen ist hingegen Emule: Obwohl das Maultierchen SysListView32-Fenster enthält, die auch korrekt auf den Doppelklick in den Spaltentrennern im Tabellenkopf reagieren, reagiert dieses Programm nicht auf die im Vorposting genannte Tastenkombination, auf mein Programm (das sich ja auch nur dieser Tastenkombination bedient) jedoch mit dem starken Stauchen der Spalten, was nicht akzeptabel ist.
Ein solches Kleinstprogramm habe ich natürlich nicht auch noch mit einer Installationsroutine versehen (ist die Registry nicht schon aufgebläht genug?), aber ein Registryzugriff ist dennoch zuschaltbar, und zwar der Autostart diese Programmes.
Kommentare, Fehlerberichte, Anregungen, Kritiken, Verbesserungsvorschläge usw. usf. sind sehr willkommen, vielen Dank dafür im voraus!
Netter Gruß
Delphi-Laie
1. Edit: Unter Vista hat evtl. sogar der Administrator (!) auf C:\ keinen Zugriff. Sollte dem so sein, dann wäre es schon mal das erste Windows, unter denen dieses Programm nicht laufen (können) wird. Außerdem würde das erklären, warum Vista z.B. für Softwareentwickler, wie sie sich hier geradez tummeln, nahezu unbrauchbar ist.
2. Edit: Unter WinXP ist das Verhalten uneinheitlich. Habe bisher zwei XP-Installationen getestet. Ein XP (SP1) reagiert nicht, eines (mit SP2) reagiert auf dieses Programm. Diese elende Mikroweichware....
3. Habe eine geringfügig modifizierte Version jetzt hochgeladen. Zum einen einen verbesserten Dateizugriff (die beiden Datendateien bleiben jetzt geöffnet, um sie vor versehentlichem Löschen zu schützen (was bei der geringen manuell einzugeben Datenmenge jedoch verschmerzbar wäre, außerdem gibt es ja noch den Papierkorb), zum anderen ist das (leider noch nicht ins Systray beförderte) Programmfenstre ("Formular") jetzt beim Programmstart bildschirmzentriert).
4. Edit: Da die Redraw-Neuzeichnenfunktion periodisch oft, bei mir 1x pro Sekunde aufgerufen wird, deckt diese eigentlich alle anderen Ereignisse mit ab und funktioniert quasi wie ein Timer. Damit wären nur Methode 2 mit Ereignis "Fenster neugezeichnet" zu aktivieren. Das könnte man dann auch mit einem Timer realisieren. Vielleicht kommt ein solcher als 3. Möglichkeit noch mit dazu, später.
Zuletzt bearbeitet von Delphi-Laie am Mi 09.04.08 16:10, insgesamt 1-mal bearbeitet
|
|
Delphi-Laie 
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Mo 07.04.08 17:00
Einem allzugroßen Interesse oder gar Beliebtheit scheint sich mein Programm nicht zu erfreuen, obwohl der Mißstand, den es zu beheben versucht, m.E. nur allzu offensichtlich (im wahrsten Sinne des Wortes) ist und seit nunmehr über ein Dutzend Jahren besteht.
Nichtdestotrotz habe ich soweit an dem Programm herumgewerkelt, daß es jetzt meinen Vorstellungen entspricht - die Betaversion ist insoweit fertig.
Geschrieben habe ich schon genug dazu, auch in den Programminformationen steht das im wesntlichen noch einmal.
Noch einmal: Die Funktionalität dieses Programmes kann leider nicht garanatiert werden, und bei (der nicht nötigen) Zuschaltung eines oder beider Hooks kann die Stabilität ebenfalls nicht garantiert werden (evtl. Windows-Explorer-Abstürze). Wenn man sich die Mühe macht, einzelne Optionen versuchsweise hinzuzuschalten (nicht zuviele auf einmal), müßte sich allerdings ein stabiler Betrieb erreichen lassen.
Für Anregungen, Krtiken, Hinweise, Verbesserungsvorschläge usw. jeglicher Art bin ich offen - vielen Dank dafür im voraus.
Nette Grüße
Delphi-Laie
Edit: Habe das Programm mit ein paar kleinen Veränderungen erneut hochgeladen (somit Beta 2). Unter anderem werden die Datendateien nunmehr im Temp-Verzeichnis gespeichert, auf die jeder Nutzer auch unter Vista zugreifen können müßte. Außerdem reagiert Vista auch auf die Tastenkombination, sodaß das Programm grundsätzlich auch unter Vista laufen müßte.
Edit 2: Das Programm bekam noch einmal tausenderlei Korrekturen und Detailverbesserungen verpaßt (somit jetzt Beta 3).
Edit 3: Ein subtiler Fehler (der aus unterschiedlichem Verhalten einer API-Funktion in verschiedenen Windows herrührt) ließ das Programm unter ME (generell 9.x?) nicht mehr lauffähig sein. Korrigiert, deshalb jetzt Beta 4
Edit 4: Einen etwas größeren und mal wieder viele kleine Fehler korrigiert, deshalb jetzt Beta 5.
Edit 5: Nach Wochen des eigenen Testens und der dankenswerten Rückmeldungen im Delphipraxis.net-Forum habe ich etliche kleine Fehler ("Unsauberkeiten"), aber auch vereinzelt böse Fehler (der in einem Falle früher gar nicht existierte, keine Ahnung, wie der hineingekommen ist) gefunden und ausgemerzt, und zwar im Exe- und im DLL-Projekt. Außerdem den Registryzugriff verbssert. Inzwischen bin ich bis zur Beta 11 vorgedrungen.
Edit 6: Inzwischen bis zur Beta 13 vorgedrungen. In der Beta 12 u.a. einen kleinen Fehler beim schreibenden Registryzugriff (.free vergessen) behoben, in der Beta 13 etliche kleine Detailverbesserungen vorgenommen.
Zuletzt bearbeitet von Delphi-Laie am Fr 20.02.09 20:10, insgesamt 1-mal bearbeitet
|
|
rumbero
Hält's aus hier
Beiträge: 1
|
Verfasst: Sa 14.02.09 14:40
Titel: Super! Vielen Dank!!
Habe das winzige Tool runtergeladen und installiert (unter Vista Home Premium). Bislang tut es exakt das, was ich mir gewuenscht hatte. Wunderbar! Vielen Dank.
Beste Gruesse
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 14.02.09 15:16
Moin!
Aktualisiere bitte dein Programm im ersten Beitrag des Threads, so wie es die Regeln für diese Sparte vorsehen. Danke.
Grund: So muss nicht jeder immer den ganzen Thread durchlesen, um an die aktuellste Version deines Programms zu kommen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Delphi-Laie 
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Fr 20.02.09 20:15
Narses hat folgendes geschrieben : | Moin!
Aktualisiere bitte dein Programm im ersten Beitrag des Threads, so wie es die Regeln für diese Sparte vorsehen. Danke.
Grund: So muss nicht jeder immer den ganzen Thread durchlesen, um an die aktuellste Version deines Programms zu kommen.
cu
Narses |
Ja, tat ich, vielen Dank für den Hinweis!
Habe noch zwei winzige Korrekturen/Präzisierungen vorgenommen, aber nur Textuelles, und zwar in der begrüßenden Messagebox (beim ersten Programmstart) und in der Programmbeschreibung. Lasse es deshalb noch bei der Versionsnummer.
Viele Grüße
Delphi-Laie
|
|
canleech
Hält's aus hier
Beiträge: 1
|
Verfasst: Do 11.06.09 10:41
Hallo, ich habe mich extra wegen diese kleinen Tools hier registriert - und bin nicht enttäuscht worden. Danke, Delphi-Laie, für deine Mühe und diese gute (merkwürdigerweise ja wahrlich kaum nachgefragte) Idee
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 11.06.09 10:53
|
|
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Do 11.06.09 11:10
Also irgendwie funktioniert das bei mir nicht ganz so, wie es soll ...
Jedes mal, wenn ich ein Programm öffne, welches ich in die Liste eingetragen habe, hagelt es "Run-Time-Errors" und mir kackt wirklich alles ab. Nur noch die Reset-Taste hilft.
Einen Screenshot kann ich dir daher leider auch nicht liefern, ich setzte mal grade nen virtuellen PC auf, um das da noch mal zu testen !
_________________ Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
|
|
Delphi-Laie 
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Do 12.11.09 23:34
Tut mir leid, daß ich erst jetzt reagiere, aber es gab keine Benachrichtigungen (mehr?). Ich programmiere daran auch noch kaum weiter, funktional ohnehin nicht, bestenfalls noch Fehlerbereinigungen. Heute stelle ich eine Version mit nur ganz geringfügigen Fehlerbereinigungen (die für den Programmbetrieb völlig unbedeutend sind) hier hinein.
Blackheart666 hat folgendes geschrieben : | canleech hat folgendes geschrieben : | Hallo, ich habe mich extra wegen diese kleinen Tools hier registriert - und bin nicht enttäuscht worden. Danke, Delphi-Laie, für deine Mühe und diese gute (merkwürdigerweise ja wahrlich kaum nachgefragte) Idee |
rumbero hat folgendes geschrieben : | Habe das winzige Tool runtergeladen und installiert (unter Vista Home Premium). Bislang tut es exakt das, was ich mir gewuenscht hatte. Wunderbar! Vielen Dank.
Beste Gruesse |
Kommt mir irgendwie komisch vor, ist das Eigenwerbung.  |
Ganz bestimmt nicht, das versichere ich Dir!
Ich warb zwar für dieses Programm an den wenigen Stellen im Internet, an denen dieser Mißstand beklagt wurde, aber hier mich selbst dafür zu loben - also nein, es gibt auch noch Dinge, die mich anwidern. Ich habe wahrlich anderes zu tun, als Sockenpuppen für mich tanzen zu lassen.
Webo hat folgendes geschrieben : | Also irgendwie funktioniert das bei mir nicht ganz so, wie es soll ...
Jedes mal, wenn ich ein Programm öffne, welches ich in die Liste eingetragen habe, hagelt es "Run-Time-Errors" und mir kackt wirklich alles ab. Nur noch die Reset-Taste hilft.
Einen Screenshot kann ich dir daher leider auch nicht liefern, ich setzte mal grade nen virtuellen PC auf, um das da noch mal zu testen ! |
Also, das Phänomen hatte ich bisher bei keinem Computer und auch noch bei keiner Reaktion in den Foren. Kann ich mir (und damit Dir) leider auch nicht erklären. Es gibt zwei Möglichkeiten: Du compilierst es selbst (mit der installierten Komponente Cooltrayicon, zur Not bekommst Du die von mir), oder Du beschreibst es mir genauer. Vielleicht ist der Zugriff auf das Temporärverzeichnis blockiert?! Doch der ist eigentlich in allen Windows-Versionen ab 95 bis hinauf zum 6.1 („7“) im Schreibmodus gegeben. Alternativ hätte ich noch eine Variante, die exklusiv auf das Haupt-/Stammverzeichnis des Laufwerkes C zugreift, aber das schmeckt neueren Windows-Versionen gewiß noch weniger.
|
|
|