Quelques petites suggestions en vrac

Quelles sont les fonctions qui amélioreraient ce programme ?
r0lZ
Messages : 110
Enregistré le : 03 févr. 2011, 14:15
Carte Tuner : Asus My Cinema PS3-100/PTS/FM/AV/RC (PCI) et Genius TVGo DVB-T03 (USB)
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: Quelques petites suggestions en vrac

Message par r0lZ »

Gingko a écrit :Mais, et c'est aussi ça qui est intéressant, c'est que si l'application est déjà active et minimisée, le résultat sera alors qu'une 2ème instance (pour le même tuner) va dans ce cas être exécutée.
Lancer une 2ème instance dans ces conditions n'est pas autorisé, en conséquence la seconde instance va détecter l'erreur et quitter immédiatement.
Mais au passage, elle va sortir l'instance existante du mode minimisé, avant de quitter. Ce qui devrait produire l'effet désiré.
Je repense à ce que vous avez écrit. Si une seconde instance de PTVM est capable de détecter qu'une première tourne déjà et, surtout, de la sortir du mode minimisé, cela signifie que d'une manière ou d'une autre, cette deuxième instance est capable de communiquer avec la 1ère, pour lui donner l'ordre d'ouvrir sa fenêtre. D'accord? Dans ce cas, comment faites-vous ça? Envoie-t'elle un message à la 1ère instance? Si oui, lequel? (Il y a moyen aussi de faire ça avec AutoHotkey, et ce serait bien sur la méthode la plus propre: faire exactement ce que vous faites déjà!)
r0lZ
Win7 x64 SP1, Asus My Cinema PS3-100 (PCI) et Genius TVGo DVB-T03 (USB), émetteur TNT de Wavre (Belgique)
Gingko
Administrateur du site et développeur
Messages : 2058
Enregistré le : 05 août 2007, 12:57
Carte Tuner : August DVB-T210 USB + divers autres
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: Quelques petites suggestions en vrac

Message par Gingko »

r0lZ a écrit :[EDIT] Cela dit, cela ne résout pas mon problème principal: comment commander PTVM quand il est icônifié. J'aurais besoin de pouvoir changer de chaîne, et lancer et stopper un enregistrement. Le reste n'a de sens que si la fenêtre est visible. Mais contrôler les enregistrements en aveugle me semble important. Imaginez-vous une solution?
Ça, ça risque d'être d'autant moins pertinent que, si plusieurs tuners sont configurés sur l'ordinateur avec plusieurs instances de Pouchin TV Mod pouvant être lancées pour les gérer, cela veut dire qu'il serait aussi possible d'avoir plusieurs instances minimisées en même temps.

Dans un tel cas, comment faire pour savoir laquelle de ces instances minimisées vous souhaiteriez commander ?

Problème éventuellement encore plus complexe si par hasard d'autres applications ont aussi des raccourcis clavier configurés.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : August DVB-T210, AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
Gingko
Administrateur du site et développeur
Messages : 2058
Enregistré le : 05 août 2007, 12:57
Carte Tuner : August DVB-T210 USB + divers autres
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: Quelques petites suggestions en vrac

Message par Gingko »

r0lZ a écrit :Je repense à ce que vous avez écrit. Si une seconde instance de PTVM est capable de détecter qu'une première tourne déjà et, surtout, de la sortir du mode minimisé, cela signifie que d'une manière ou d'une autre, cette deuxième instance est capable de communiquer avec la 1ère, pour lui donner l'ordre d'ouvrir sa fenêtre. D'accord? Dans ce cas, comment faites-vous ça? Envoie-t'elle un message à la 1ère instance? Si oui, lequel? (Il y a moyen aussi de faire ça avec AutoHotkey, et ce serait bien sur la méthode la plus propre: faire exactement ce que vous faites déjà!)
Oui, il y a une certaine communication effectuée en se servant des messages transmis aux fenêtres de Windows. L'instance qui détecte la présence d'une autre instance envoie à cette instance le message qui est normalement généré par la commande de restauration (« WM_SYSCOMMAND » avec paramètre « SC_RESTORE »).

La prochaine version va d'ailleurs inclure un système de communication similaire pour vérifier qu'aucune autre instance (avec tuner différent) n'est en train d'enregistrer avant d'éteindre l'ordinateur à la fin de son propre enregistrement si cet enregistrement a été programmé ainsi.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : August DVB-T210, AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
r0lZ
Messages : 110
Enregistré le : 03 févr. 2011, 14:15
Carte Tuner : Asus My Cinema PS3-100/PTS/FM/AV/RC (PCI) et Genius TVGo DVB-T03 (USB)
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: Quelques petites suggestions en vrac

Message par r0lZ »

Gingko a écrit :Ça, ça risque d'être d'autant moins pertinent que, si plusieurs tuners sont configurés sur l'ordinateur avec plusieurs instances de Pouchin TV Mod pouvant être lancées pour les gérer, cela veut dire qu'il serait aussi possible d'avoir plusieurs instances minimisées en même temps.

Dans un tel cas, comment faire pour savoir laquelle de ces instances minimisées vous souhaiteriez commander ?

Problème éventuellement encore plus complexe si par hasard d'autres applications ont aussi des raccourcis clavier configurés.
Bien sur, si il y a plusieurs instances, le problème est plus complexe. Mais de toutes façons, il est possible de s'en sortir avec AutoHotkey. Si il y a plusieurs instances, on peut savoir quels sont les PIDs de chacune de ces instances, et s'arranger pour envoyer les clés à la fenêtre qui correspond à l'instance qui a telle ou telle PID. Mais je dois admettre que pour commander plusieurs instances avec une seule télécommande, cela pause d'autres problèmes que celui de la programmation. Il risque d'y avoir trop peu de touches sur la télécommande, à moins d'en définir certaines pour pouvoir sélectionner une instance précise. Mais tout cela devient compliqué. De toutes façons, dans un pc multimedia sans clavier ni souris, il me semble que lancer plusieurs instances à la fois n'est pas raisonnable. Cela dit, je n'ai qu'un tuner, donc pour moi, le problème ne se pause pas.

Si un jour vous implantez une interface COM, il sera évidemment important que les différentes instances aient différentes IDs. Mais ça ne devrait pas être très compliqué. Il suffit de tester si une instance PTVM#1 existe déjà (par définition très facile à faire via une demande COM), et utiliser PTVM#2 si c'est le cas, etc...

Quant aux raccourcis clavier, il n'y a aucun problème si on les envoie uniquement à l'application concernée, comme je le fais, puisqu'ils ne sont pas globaux et ne sont donc pas vus par le système ou par les autres applications.
r0lZ
Win7 x64 SP1, Asus My Cinema PS3-100 (PCI) et Genius TVGo DVB-T03 (USB), émetteur TNT de Wavre (Belgique)
r0lZ
Messages : 110
Enregistré le : 03 févr. 2011, 14:15
Carte Tuner : Asus My Cinema PS3-100/PTS/FM/AV/RC (PCI) et Genius TVGo DVB-T03 (USB)
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: Quelques petites suggestions en vrac

Message par r0lZ »

Gingko a écrit :Oui, il y a une certaine communication effectuée en se servant des messages transmis aux fenêtres de Windows. L'instance qui détecte la présence d'une autre instance envoie à cette instance le message qui est normalement généré par la commande de restauration (« WM_SYSCOMMAND » avec paramètre « SC_RESTORE »).
Merci pour l'info. Je vais donc envoyer le message correspondant directement. Ce sera plus rapide que de devoir relancer le programme.
Gingko a écrit :La prochaine version va d'ailleurs inclure un système de communication similaire pour vérifier qu'aucune autre instance (avec tuner différent) n'est en train d'enregistrer avant d'éteindre l'ordinateur à la fin de son propre enregistrement si cet enregistrement a été programmé ainsi.
Très intéressant! Ça me permettra peut-être aussi de tester si PTVM est en train d'enregistrer! Cela dit, je préférerais la solution toute simple de modifier le contenu de la barre de titre, comme suggéré plus haut. Avec AutoHotkey, c'est de loin ce qui est le plus facile à tester. (Sans compter que ça aurait aussi l'avantage de rendre le fait qu'un enregistrement est en cours plus évident.) Il me reste toutefois à voir si ça marcherait aussi quand PTVM est icônifié dans le tray.
r0lZ
Win7 x64 SP1, Asus My Cinema PS3-100 (PCI) et Genius TVGo DVB-T03 (USB), émetteur TNT de Wavre (Belgique)
r0lZ
Messages : 110
Enregistré le : 03 févr. 2011, 14:15
Carte Tuner : Asus My Cinema PS3-100/PTS/FM/AV/RC (PCI) et Genius TVGo DVB-T03 (USB)
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: Quelques petites suggestions en vrac

Message par r0lZ »

Merci encore! Envoyer les messages fonctionne parfaitement (y compris en mode plein écran), et, comme je le pensais, c'est bien plus rapide que de relancer le programme. De plus, envoyer SC_MINIMIZE icônifie PTVM dans le tray, alors que la commande AutoHotkey WinMinimize ne fait que la minimiser dans la barre des tâches. Deux problèmes résolus!

Pour ceux que ça intéresse (et pour avoir un apperçu de la puissance de AutoHotkey), voici la fonction que j'utilise:

Code : Tout sélectionner

TogglePTVMWindowState()
{
    ptvm_window_class := "ahk_class Pouchin TV Mod"

    WM_SYSCOMMAND := 0x112
    SC_MINIMIZE   := 0xF020
    SC_RESTORE    := 0xF120

    ; check if PTVM is running
    DetectHiddenWindows, on
    IfWinNotExist, %ptvm_window_class%
        return, 0

    ; check if PTVM is currently visible    
    DetectHiddenWindows, off
    IfWinExist, %ptvm_window_class%
    {
        ; iconify PTVM
        SendMessage, %WM_SYSCOMMAND%, %SC_MINIMIZE%, 0, , %ptvm_window_class%
        return, -1
    } else {
        ; restore PTVM
        DetectHiddenWindows, on  ; necessary to send the message to the window
        SendMessage, %WM_SYSCOMMAND%, %SC_RESTORE%, 0, , %ptvm_window_class%
        return, 1
    }
}
Bien sur, ça ne fonctionne correctement que si une seule instance de PTVM tourne.
r0lZ
Win7 x64 SP1, Asus My Cinema PS3-100 (PCI) et Genius TVGo DVB-T03 (USB), émetteur TNT de Wavre (Belgique)
Curtis
Messages : 164
Enregistré le : 27 févr. 2010, 20:15
Carte Tuner : Leadtek DTV1800H
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Quelques petites suggestions en vrac

Message par Curtis »

je remonte une des suggestions de r0lZ :
J'ai 2 cartes son: une est dédiée à l'ordi, aux sons de Windows, aux jeux, etc..., et l'autre, connectée à ma chaîne hi-fi & vidéo, aux applications multimédia sérieuses. (...) Mais actuellement, PTVM ne permet pas de choisir l'output audio, et donc émet le son TV via la carte son par défaut. Une option pour choisir la sortie son à utiliser serait donc la bienvenue
j'ai aussi 2 cartes sons, une maxisound fortissimo PCI qui est configuré comme carte son par défaut dans le système ( et qui donc utilisé par pouchintvmod ) et une autre carte son qui est une puce audio realtek HD 7.1 qui est relié directement à mon ampli hifi et qui me sert pour le son des vidéos/DVD et de la musique,

je trouve aussi dommage que pouchintvmod ne donne pas la possibilité de choisir la carte son car beaucoup d'applications audio/vidéo donnent cette possibilité, comme pouchintvmod utilise massivement directshow alors cela serait relativement facile à mettre en place puisque cela revient à connecter dans le graph le filtre "directsound" correspondant à une carte son particulière,

il suffirait alors dans l'onglet configuration "pilotes" d'ajouter une liste déroulante permettant de lister les filtres directsound correspondant aux renders audios, dans mon cas j'ai :

"default directsound device" ( la carte son par défaut utilisée par le système )
"directsound : Realtek HD Audio output"
"directsound : Yamaha DS-XG Audio (WDM)" ( ça correspond à la carte son maxisound fortissimo )

ces 3 filtres devraient alors apparaitre dans la liste déroulante de selection pour la configuration, l'utilisateur choisit le filtre lié à la bonne carte son et pouchintvmod mémorise ce choix pour les futures constructions du graph qui font appel à directsound, c'est peut-être jouable sans trop taper de lignes de codes ?

mais je comprendrai que cet ajout ne soit pas prioritaire, il y a probablement d'autres choses prioritaires à implémenter comme la gestion des sous-titres ou la compatibilité avec ffdshow DXVA ( gestion de l'accélération matérielle H264 par la carte graphique qui rendrait bien des services aux possesseurs de petites configs de type Athlon XP mono core ) :)
Répondre