uglyrooster Posted June 6, 2010 Share Posted June 6, 2010 Nachdem ich mehrere Tools verwendet habe, die ihre Aufgabe nur unzureichend erfüllen, hiermit einmal ein Wunsch zur Implementierung: Bei der Umschaltung auf einen anderen Monitor mit anderer Auflösung (z. B. mit ATI-Catalyst Hotkey) oder bei der Fernwartung mit Teamviewer verliert der DVBViewer trotz Einstellung "Immer im Vordergrund bei Vollbild" regelmässig seinen Fokus. Man muss also manuell mit der Maus irgendwo hinklicken, das reicht natürlich, um den Fokus wieder zu holen. Für ein Mediacenter also etwas unglücklich, auch wenn ich mir auf der Fernbedienung eine entsprechende Taste angelernt habe. Kann man das über den DVBViewer regelmässig prüfen bzw. bei erkennbaren Änderungen neu veranlassen? Autosizer, Tray-It und andere prüfen das auch nur beim Programmaufruf. Quote Link to comment
Griga Posted June 6, 2010 Share Posted June 6, 2010 (edited) verliert der DVBViewer trotz Einstellung "Immer im Vordergrund bei Vollbild" regelmässig seinen Fokus. Der Eingabefokus und die Eigenschaft "Immer im Vordergrund" sind bei Windows zwei verschiedene Paar Schuhe. Ein TopMost-Fenster kann sich im Vordergrund befinden, ohne den Fokus zu haben! Kann man das über den DVBViewer regelmässig prüfen bzw. bei erkennbaren Änderungen neu veranlassen? Ja, kann man. Und zwar mit dem angehängten Plugin. Im Plugins-Ordner speichern. Nach dem nächsten DVBViewer-Start gibt es im Plugins-Menü einen Menüpunkt "Keep Focus", mit dem man die Funktion ein/ausschaltet. Standardmäßig ist sie ausgeschaltet. Wenn man sie einschaltet, überprüft ein Timer im Sekundentakt, ob der DVBViewer den Eingabefokus hat. Falls nicht, bekommt er ihn. Die aktuelle Einstellung wird beim Beenden des DVBViewers in Konfigurationsordner\Plugins\KeepFocus.ini gespeichert und beim nächsten Start wieder hergestellt. Das funktioniert jedenfalls mit DVBViewer Pro & GE unter Windows XP. Unter Vista und Windows 7 weiß ich nicht - müsste jemand testen, ob es dort verschärfte Restriktionen bei solchen Eingriffen gibt. Normalerweise erlaubt Windows Anwendungen nicht, sich beliebig den Fokus zu krallen, da sinnvollerweise allein der Anwender bestimmen sollte, welches Fenster den Fokus hat, und andere Anwendungen eventuell unbedienbar werden. Deshalb war etwas Trickserei nötig... Weitere Informationen zur Version 1.2 hier. KeepFocus_1_2.zip Edited June 25, 2010 by Griga Anhang wegen Verbesserung ausgetauscht Quote Link to comment
Lars_MQ Posted June 6, 2010 Share Posted June 6, 2010 Normalerweise erlaubt Windows Anwendungen nicht, sich beliebig den Fokus zu krallen, da sinnvollerweise allein der Anwender bestimmen sollte, welches Fenster den Fokus hat, und andere Anwendungen eventuell unbedienbar werden. Das haben scheinbar die MS Windows Mediaplayer programmierer noch nie gehört, unter windows 7 gibt das teil sich immer den focus im vollbild (auch per timer). Wahrscheinlich, um den Problemen mit ruckelndem EVR im vollbild bei focusverlust zu begegnen... Quote Link to comment
Griga Posted June 6, 2010 Share Posted June 6, 2010 Ich habe den Anhang oben gegen eine verbesserte Version ausgetauscht. Die vorherige 1.0 entzog geöffneten Filter-Eigenschaftsseiten permanent den Fokus. Ziel ist jedoch, dass alle zum DVBViewer gehörigen Fenster in ihrem Verhältnis zueinander unverändert bleiben. Quote Link to comment
uglyrooster Posted June 6, 2010 Author Share Posted June 6, 2010 (edited) Klasse! Da wurschtel ich jahrelang herum und denke das dies niemanden interessiert und dann gibt es die Lösung in ein paar Minuten. Danke, Ihr riskiert damit allerdings weitere Vorschläge von mir unter windows 7 gibt das teil sich immer den focus im vollbild Das stimmt, leider verliert er auf die oben beschriebene Art trotzdem seinen Fokus, ich teste einmal das Plugin.. Edited June 6, 2010 by uglyrooster Quote Link to comment
uglyrooster Posted June 6, 2010 Author Share Posted June 6, 2010 Scheint auch unter Windows 7 gut zu funktionieren... Quote Link to comment
Griga Posted June 7, 2010 Share Posted June 7, 2010 Lustig ist, wenn man zwei DVBViewer-Instanzen mit aktivem Plugin startet. Die kämpfen dann um den Fokus Quote Link to comment
hd-fan Posted June 8, 2010 Share Posted June 8, 2010 Lustig ist, wenn man zwei DVBViewer-Instanzen mit aktivem Plugin startet. Die kämpfen dann um den Fokus Hallo Griga, auf dein Programm habe ich lange gewartet:DANKE! Kannst du mein Glück perfekt machen und nur im Vollbildmodus den Fokus setzen? Dann braucht man nicht das Plugin immer wieder an und ausschalten... Besten Dank, viele Grüße hd-fan Quote Link to comment
taximann Posted June 17, 2010 Share Posted June 17, 2010 Hallo Griga, cooles plugin, schließe mich Newbie an. Wäre prima, nur im Vollbildmodus. Gruß taximann Quote Link to comment
xarko Posted June 18, 2010 Share Posted June 18, 2010 (edited) Wäre prima, nur im Vollbildmodus. Ob Griga die letztgenannten Wünsche nicht gesehen hat, keine Zeit hat für das Umsetzen der Vorschläge oder dergleichen, kann ich nicht sagen!? Griga hat da aber schon Recht, dass man hier unterscheiden muss zwischen Fenster, die den Fokus haben und Fenstern im Vordergrund. Wenn es darum geht, dem DVBViewer ständig im Vollbild den Fokus zu geben (z.B. wichtig bei einigen Fernbedienungen, die die Befehle nur an das aktive Fenster weiterleiten) dürfte das auch z.B. über ein AutoIt-Skript machbar sein - als vorübergehende Lösung. AutoIt ist Freeware und gibt es hier: http://www.autoitscript.com/autoit3/downloads.shtml Einfach AutoIt installieren und den Code als Fokus.au3 abspeichern. Lässt sich dann per Doppelklick wie eine normale EXE-Datei starten. Das Skript kann man ja nach Bedarf anpassen. #include <Misc.au3> Opt("WinTitleMatchMode", 3) Opt("TrayIconHide", 0) ; If you want to start DVBViewer with this script: ;~ If Not ProcessExists("DVBViewer.exe") Then Run ("c:\Programme\DVBViewer\DVBViewer.exe") If _Singleton("DVBViewer-Focus", 1) = 0 Then MsgBox(0, "Warning", "An occurence of 'DVBViewer-Focus' is already running") Exit EndIf Global $Paused ;~ (! = ALT; + = SHIFT; ^ = CONTROL; # = WIN) ;~ HotKeySet("{ESC}", "Terminate") ; ESC HotKeySet("{PAUSE}", "TogglePause") ; Pause $DVBViewer_window_name = "DVBViewer" While 1 If ProcessExists("DVBViewer.exe") Then If BitAND(WinGetState("DVBViewer"), 32) Then $pid_DVBViewer = WinGetProcess("DVBViewer") $Window_title_active = WinGetTitle("[active]") If $pid_DVBViewer = WinGetProcess($Window_title_active) Then $DVBViewer_window_name = $Window_title_active $pid_active = WinGetProcess($Window_title_active) If ($pid_active <> $pid_DVBViewer) Then WinActivate("DVBViewer") WinActivate($DVBViewer_window_name) EndIf EndIf EndIf Sleep(1000) WEnd Func Terminate() MsgBox(0, "DVBViewer-Focus", "Terminate 'DVBViewer-Focus'", 3) Exit EndFunc ;==>Terminate Func TogglePause() $Paused = Not $Paused While $Paused Sleep(100) ToolTip('Script is "Paused"', 0, 0) WEnd ToolTip("") EndFunc ;==>TogglePause EDIT: Ich habe den Anhang oben gegen eine verbesserte Version ausgetauscht. Die vorherige 1.0 entzog geöffneten Filter-Eigenschaftsseiten permanent den Fokus. Ziel ist jedoch, dass alle zum DVBViewer gehörigen Fenster in ihrem Verhältnis zueinander unverändert bleiben. Ich habe mir dein Plugin nun auch mal angesehen. Wenn du das tatsächlich perfektionieren willst und das dein Ziel ist: Hat man z.B. das Fenster über Ansicht -> Filter --> DVB Source geöffnet und ein anderes Programm versucht den Fokus zu bekommen, sorgt dein Plugin nicht dafür, dass dieses Fenster wieder erscheint; springt dann wieder zum DVBViewer-Fenster. Dann hilft nur noch ALT+TAB oder kurz in den Fenstermodus wechseln, um wieder zum ursprünglichen Fenster zu gelangen. Müsste man also noch mehr tricksen. Aber das sind absolute Nebensächlichkeiten, denke ich - wird selten genug vorkommen. Erwähne das nur der Vollständigkeit halber. Würde bei meinem Code auch passieren, wenn man die Eigenschaftsseite aufruft und vor Ablauf der Sleep-Time (kann man ja noch verkürzen, wenn man will) ein anderes Fenster den Fokus übernehmen will. Aber noch weiter aufbohren will ich das auch nicht; wäre eh der absolute Ausnahmefall. Edited June 19, 2010 by xarko Quote Link to comment
Griga Posted June 25, 2010 Share Posted June 25, 2010 So, jetzt habe ich wieder Zeit für das Plugin gefunden. Weiter oben (im zweiten Posting) ist eine neue Version 1.2 angehängt: - Ergänzt: Im Plugins-Menü des DVBViewers bietet der Eintrag "Keep Focus" ein Untermenü mit drei Wahlmöglichkeiten: - Off - Always - Full Screen Only Die Bedeutung dürfte klar sein - Ergänzt: Versions-Info in der DLL. Installationsanleitung und weitere Informationen siehe zweites Posting. Hat man z.B. das Fenster über Ansicht -> Filter --> DVB Source geöffnet und ein anderes Programm versucht den Fokus zu bekommen, sorgt dein Plugin nicht dafür, dass dieses Fenster wieder erscheint; springt dann wieder zum DVBViewer-Fenster. Filter-Eigenschaftsfenster unterliegen der DirectShow-Verwaltung, sind im DVBViewer nur schlecht beeinflussbar und in einem Plugin noch schlechter Quote Link to comment
xarko Posted June 25, 2010 Share Posted June 25, 2010 Hey, das sieht doch prima aus, funktioniert hier nach ersten Tests einwandfrei. "Full Screen Only" ist doch genau das, was noch fehlte. Sag ich doch auch mal stellvertretend für die anderen Poster: vielen Dank! Filter-Eigenschaftsfenster unterliegen der DirectShow-Verwaltung, sind im DVBViewer nur schlecht beeinflussbar und in einem Plugin noch schlechter Ok, und wie gesagt: diese Wiederherstellungsfunktion wird wohl eh kaum jemand vermissen. Quote Link to comment
sw4y Posted June 25, 2010 Share Posted June 25, 2010 Vielen Dank für die neue Version! Quote Link to comment
test Posted July 26, 2010 Share Posted July 26, 2010 Hallo, ich habe ein Problem mit dem DVBViewer (egal welche Version) und der Sofortaufnahme. Drücke ich R für Aufnahme oder benutze eine FB die im Endeffekt genau das gleiche macht, verliert DVBViewer den Fokus, sodaß ich immer mit der Maus 1x klicken muß im DVBViewer Vollbild oder 1x alt-Tab drücken muß, damit der Fokus wieder vorhanden ist. Die Aufnahme ansich funktioniert, nur zum Beenden der Aufnahme oder für irgendetwas anderes muß ich obiges machen, weil wie gesagt der Fokus verschwunden ist. Das obige Plugin hilft hier leider nicht. Jemand eine Idee woran das liegt und noch besser: wie man das abschalten kann? Ich benutze Windows 7 32bit. Vielen Dank! Quote Link to comment
Tjod Posted July 26, 2010 Share Posted July 26, 2010 Starte den DVBViewer Startmenü > Programme > DVBViewer Programmgruppe > Support > DVBViewer Pro (Safe Mode) gibt es das Problem dann auch noch? Quote Link to comment
Griga Posted July 26, 2010 Share Posted July 26, 2010 Drücke ich R für Aufnahme oder benutze eine FB die im Endeffekt genau das gleiche macht,verliert DVBViewer den Fokus Kann ich unter XP nicht nachvollziehen. Wer oder was hat denn danach den Fokus? Quote Link to comment
test Posted July 26, 2010 Share Posted July 26, 2010 tja, das ist das komische. Laut iMON von Soundgraph (meine FB) hat der DVBViewer immernoch den Fokus, zumindest sagt iMON das, wenn ich etwas auf der FB drücke. Wenn etwas anderes den Fokus hätte, würde entweder "no command defined" oder ein anderes Programm erschinen für was die Taste gedrückt wurde, nur es ist immernoch DVBViewer. Das DVBViewer Fenster ist nur nicht mehr aktiv. Sehr komisches Verhalten ... :-( Passiert komischerweise auch _nur_ bei der Sofortaufnahme. Quote Link to comment
giveme5 Posted July 26, 2010 Share Posted July 26, 2010 Danke für das Plugin, suche ich auch schon länger Quote Link to comment
Griga Posted July 26, 2010 Share Posted July 26, 2010 Das DVBViewer Fenster ist nur nicht mehr aktiv. Wie äußert sich das genau? Müsste man am Rahmen sehen. Quote Link to comment
uglyrooster Posted August 16, 2010 Author Share Posted August 16, 2010 Bild in Bild oder Mosaik entzieht dem Hauptfenster bzw. Vollbild bei aktiviertem Plugin den Fokus, ist das bei Euch auch so? Quote Link to comment
Griga Posted August 16, 2010 Share Posted August 16, 2010 Mit Mosaik und der letzten Pro Beta unter XP hier nicht. Quote Link to comment
Tjod Posted August 16, 2010 Share Posted August 16, 2010 Sind noch andere Plugins installiert? Vor allem Plugins in DVBViewer\Plugins\Plugins1 usw. kommen da in Frage. Da die für Bild in Bild und aufnahmen im Hintergrund verwendet werden (bei Mosaik bin ich mir grade nicht sicher könnte aber auch sein). Alternativ kommt noch der Decoder in Frage wenn der ein Systry Icon einblendet könnte das die Probleme Verursachen. Quote Link to comment
uglyrooster Posted August 16, 2010 Author Share Posted August 16, 2010 Ihr kommt auf Ideen, das hätte ich als Letztes vermutet . Am Plugins-Verzeichnis liegt es schon einmal nicht und der Decoder blendet nichts ein. Mir ist noch aufgefallen, dass der gleiche Effekt nach Programmierung einer Aufnahme über den Sender-EPG eintritt, wenn NICHT an den Recording Service übergeben wird. Mit Recording Service ist das einwandfrei. Ich habe eine Ursache beim Concinnity 3D vermutet. Aber das sind alles Kleinigkeiten, ich forsche einmal genauer... Quote Link to comment
volli1976 Posted April 6, 2011 Share Posted April 6, 2011 Hallo, ich habe Windows 7 64 bit und mein DVBViewer befinde sich im Ordner C:\Programme\DVBViewer\Program Files(x86) Kann mir eventuell jemand die DLL Datei mit C entsprechend anpassen bzw. kompilieren? Das wäre astrein. Ich bin es leid mit diesem Vordergrundprobleme. Vielen Dank im Voraus. Volkan Quote Link to comment
nuts Posted April 7, 2011 Share Posted April 7, 2011 Worin besteht jetzt genau das Problem? Quote Link to comment
volli1976 Posted April 7, 2011 Share Posted April 7, 2011 (edited) Dass es bei mir nicht funktioniert :-( ...und das liegt garantiert daran, dass mein DVBViewer sich im "Program Files (86x)" Ordner befindet. In dem Code sehe ich, dass der Pfad unter C: mit "Programme" hardgecoded ist. Somit hat er bei mir dann ja keine Referenz :-( Ich müsste schon die DLL-Datei mit der Referenz statt "C:\Programme\DVBViewer\", folgenden Pfad haben: "C:\Program Files (x86)\DVBViewer\" (OBEN IST EIN FEHLER IN MEINEM VORLETZTEN BEITRAG! Der Pfad ist exakt der hier: "C:\Program Files (x86)\DVBViewer\" Edited April 7, 2011 by volli1976 Quote Link to comment
Griga Posted April 7, 2011 Share Posted April 7, 2011 In dem Code sehe ich, dass der Pfad unter C: mit "Programme" hardgecoded ist. In welchem Code? In KeepFocus.dll ist kein Pfad hardgecodet. Wie kommst du auf die Idee? Quote Link to comment
volli1976 Posted April 8, 2011 Share Posted April 8, 2011 Hier: ; If you want to start DVBViewer with this script: ;~ If Not ProcessExists("DVBViewer.exe") Then Run ("c:\Programme\DVBViewer\DVBViewer.exe") Quote Link to comment
Griga Posted April 8, 2011 Share Posted April 8, 2011 KeepFocus.dll ist ein in Delphi geschriebenes Plugin und hat nichts mit dem Script zu tun. Quote Link to comment
xarko Posted April 8, 2011 Share Posted April 8, 2011 (edited) KeepFocus.dll ist ein in Delphi geschriebenes Plugin und hat nichts mit dem Script zu tun. Korrekt. volli1976, lies doch bitte nochmal nach, wer hier was geschrieben hat. Das AutoIt-Skript hat nichts mit Grigas DLL zu tun. Das war, wie nachzulesen ist, nur eine vorübergehende Zwischenlösung, bis dass Griga da eine neue Version nachgeschoben hatte. Im Übrigen bewirken die Zeilen oben rein gar nichts. Die sind durch das Semikolon auskommentiert; werden also ignoriert. Nur derjenige, der gleichzeitig mit dem Skript auch den DVBViewer starten will, kann die entsprechende Zeile entkommentieren und sollte dabei natürlich den Pfad zum DBViewer seinem System entsprechend anpassen. Hast du Grigas DLL denn überhaupt richtig installiert (KeepFocus.dll im "Plugins"-Unterordner vom DVBViewer kopiert)? Dann solltest du im DVBViewer einen Menüpunkt "Plugins" vorfinden unter dem man den Unterpunkt "Keep Focus" mit seinen Optionen aufrufen kann. Edited April 8, 2011 by xarko Quote Link to comment
volli1976 Posted April 9, 2011 Share Posted April 9, 2011 O.K., schade, dann scheint es bei mir nicht zu funktionieren. Also das Menü kann ich sehen und auch alles aktivieren, aber es wird trotzdem nicht im Vordergrund gehalten(natürlich nach einem Neustart) :-( Quote Link to comment
Tjod Posted April 10, 2011 Share Posted April 10, 2011 Du könntest mal Testen ob es klappt wenn du alle anderen Plugins entfernst so das die KeepFocus.dll die einzige Datei im Plugins Verzeichnis ist. Quote Link to comment
grobi1213 Posted February 13, 2013 Share Posted February 13, 2013 Hallo, auch wenn dieser Thread schon älter ist, ich habe genau das gleiche Problem. Dito Win7x64 und auch bei mir funzt der Keepfocus Plugin Nullkommanull. Kannst Du mal schauen ob sich bei dir die KeepFocus.ini (wie beschrieben) selbst erstellt hat? Bei mir ist es nämlich nicht der Fall. Vielleicht liegt es daran, das Win7 x64 das irgendwie untebindet. Ich habe sie momentan selbst erstellt aber außer "Active=1" wüsste ich keinen Inhalt den ich da eintragen könnte. Vielleicht kann der nette Plugin ersteller mal den regulären Inhalt (oder irgendjemand anderes) hier pasten, damit ich mir diese selbst anlegen kann. Vielleicht finden wir so raus warum das Plugin nicht funzt. Als temporäre notlösung habe ich mir von meiner MCE Remote den "Mausklick" auf meine Harmony angelernt und drücke den Focus momentan damit manuell. Wäre Toll wenn jemand helfen könnte. Gruß Grobi1212 Quote Link to comment
Griga Posted February 13, 2013 Share Posted February 13, 2013 Unter Win7 32 Bit funktioniert es hier einwandfrei. Hast du im Plugins-Menü des DVBViewers die gewünschte Einstellung vorgenommen? Ganz von alleine geht das nicht. Quote Link to comment
grobi1213 Posted February 13, 2013 Share Posted February 13, 2013 Hi, ja selbstverständlich. Ich und der Vorposter reden aber von der Win7 64 Bit version. Hast du die KeepFocus.ini im DVBViewer Plugin ordner? Falls ja, könntest Du mir den Inhalt hier posten? Das wäre wirklich nett wenn das möglich wäre... Danke für die Antwort Gruß Grobi1212 Quote Link to comment
Griga Posted February 13, 2013 Share Posted February 13, 2013 Hast du die KeepFocus.ini im DVBViewer Plugin ordner? Nein. Die befindet sich im Konfigurationsordner\Plugins. Aber das ist auch egal. Während der DVBViewer läuft spielt sie keine Rolle. Die Datei dient nur dazu, die Menü-Einstellung über das Programmende hinaus zu bewahren und beim nächsten Programmstart wieder herzustellen. Warum es bei euch unter Win7 64 Bit nicht funktioniert, weiß ich nicht und kann es auch nicht testen. Quote Link to comment
grobi1213 Posted February 14, 2013 Share Posted February 14, 2013 Hi Griga, Update: Plugin funzt definitiv auch unter Win7 64Bit. Allerdings mit einer einschränkung. Man muss auch den DVBViewer über die Windows shell laden (bzw. Explorer shell) benutzt man eine andere wie ich z.b den XBMC Launcher mit XBMC Shell reagiert das plugin leider nicht. Auch der XBMC Launcher hat alle focus einstellungen aus, so das es definitiv an der shell liegt. Vielleicht kann man an dem Plugin noch was ändern? Frage das nur weil viele den Viewer über eine eigene shell laden wie z.b eventghost oder eben den xbmc launcher. Bei eventghost kann man dann mit "Finde Fenster" arbeiten, aber das ist sowas von unzuverlässig und kompliziert, da macht dein Plugin wirklich deutlich mehr freude Alles im Allen ein sehr sinnvolles Plugin und neben dem Frequez switcher eines der wichtigsten für die Software wenn man mit Fernbedienung arbeitet. Dafür von mir nochmal ein riesen Danke, schade eben nur das es nur unter geladener Windows Shell geht.... Viele Grüße Grobi1212 Quote Link to comment
Griga Posted February 14, 2013 Share Posted February 14, 2013 Vielleicht kann man an dem Plugin noch was ändern? Ich wüsste nicht was. Das Plugin verwendet nur Windows API-Aufrufe, d.h. keinen, der etwas mit der Shell zu tun hat. Quote Link to comment
duddsig Posted February 17, 2013 Share Posted February 17, 2013 Nur mal so als Rückmeldung: Hab das Plugin der Neugier halber unter W7/64 getestet. Funktioniert ohne Probleme. Hatte mal ein Focusproblem mit einem Virenscanner, da hätte es mir gute Dienste leisten können. Ich hatte damals den Virenscanner gewechselt. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.