Jump to content
uglyrooster

KeepFocus (DVBViewer Fokus im Vordergrund)

Recommended Posts

uglyrooster

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.

Share this post


Link to post
Griga
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 by Griga
Anhang wegen Verbesserung ausgetauscht

Share this post


Link to post
Lars_MQ
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... :)

Share this post


Link to post
Griga

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.

Share this post


Link to post
uglyrooster

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 by uglyrooster

Share this post


Link to post
uglyrooster

Scheint auch unter Windows 7 gut zu funktionieren...

Share this post


Link to post
Griga

Lustig ist, wenn man zwei DVBViewer-Instanzen mit aktivem Plugin startet. Die kämpfen dann um den Fokus ;)

Share this post


Link to post
hd-fan

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

Share this post


Link to post
taximann

Hallo Griga,

 

cooles plugin, schließe mich Newbie an. Wäre prima, nur im Vollbildmodus.

 

Gruß

 

taximann

Share this post


Link to post
xarko

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!? 1icon_nixweissA.gif

 

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. o:)

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 by xarko

Share this post


Link to post
Griga

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 ;)

Share this post


Link to post
xarko

Hey, das sieht doch prima aus, funktioniert hier nach ersten Tests einwandfrei. "Full Screen Only" ist doch genau das, was noch fehlte. :biggrin:

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. ;)

Share this post


Link to post
sw4y

Vielen Dank für die neue Version!

Share this post


Link to post
test

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!

Share this post


Link to post
Tjod

Starte den DVBViewer Startmenü > Programme > DVBViewer Programmgruppe > Support > DVBViewer Pro (Safe Mode) gibt es das Problem dann auch noch?

Share this post


Link to post
Griga
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?

Share this post


Link to post
test

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.

Share this post


Link to post
giveme5

Danke für das Plugin, suche ich auch schon länger :rolleyes:

Share this post


Link to post
Griga
Das DVBViewer Fenster ist nur nicht mehr aktiv.

Wie äußert sich das genau? Müsste man am Rahmen sehen.

Share this post


Link to post
test

das Fenster ist inaktiv.

Share this post


Link to post
uglyrooster

Bild in Bild oder Mosaik entzieht dem Hauptfenster bzw. Vollbild bei aktiviertem Plugin den Fokus, ist das bei Euch auch so?

Share this post


Link to post
Griga

Mit Mosaik und der letzten Pro Beta unter XP hier nicht.

Share this post


Link to post
Tjod

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.

Share this post


Link to post
uglyrooster

Ihr kommt auf Ideen, das hätte ich als Letztes vermutet :blush: .

 

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...

Share this post


Link to post
volli1976

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

Share this post


Link to post
nuts

Worin besteht jetzt genau das Problem?

Share this post


Link to post
volli1976

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 by volli1976

Share this post


Link to post
Griga
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?

Share this post


Link to post
volli1976

Hier:

 

; If you want to start DVBViewer with this script:

;~ If Not ProcessExists("DVBViewer.exe") Then Run ("c:\Programme\DVBViewer\DVBViewer.exe")

Share this post


Link to post
Griga

KeepFocus.dll ist ein in Delphi geschriebenes Plugin und hat nichts mit dem Script zu tun.

Share this post


Link to post
xarko

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. :whistle:

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 by xarko

Share this post


Link to post
volli1976

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) :-(

Share this post


Link to post
Tjod

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.

Share this post


Link to post
grobi1213

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

Share this post


Link to post
Griga

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.

Share this post


Link to post
grobi1213

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

Share this post


Link to post
Griga
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.

Share this post


Link to post
grobi1213

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

Share this post


Link to post
Griga
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.

Share this post


Link to post
duddsig

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.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...