IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Attendre l'ouverture d'une fenêtre


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Par défaut Attendre l'ouverture d'une fenêtre
    Bonjour,

    Je cherche à créer un petit script qui permet sur un poste double écran de transférer la fenêtre que l'on ouvre vers l'écran approprié. J'utilise pour cela un objet com issu d'un programme qui se nomme ultramon.

    j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dim wnd
    Set wnd = CreateObject("UltraMon.Window")
     
    do while true
    	If wnd.Find("Nom fenêtre", "", 1, 0, 0) = True Then
    		wnd.Monitor = 2
    		wnd.ApplyChanges 0
    	End If
    loop
    c'est tout simple et ça marche (à condition d'avoir installé le logiciel ultramon, evidemment).

    Mon problème, c'est que il m'est ensuite impossible de faire glisser manuellement ma fenêtre vers le premier écran car automatiquement elle revient sur le deuxième.

    Donc en clair, ce que je voudrais, c'est de ne la tranférer que lors de son ouverture.

    j'aurais un petit script donc qui tournerait en tâche de fond et qui à chaque ouverture de fenêtre vérifie par rapport à son nom si elle doit être transférer ou non sur le deuxième écran.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je te propose une chose :
    à chaque fois que tu fait le passage d'un ecran à l'autre via ton script donc à l'ouverture de la fenetre, tu enregistre le nom de la fenetre dans une collection.
    Dans ta boucle tu fait un test supplémentaire qui verifie si le nom de la fenêtre fait partis de la collection, et si c'est le cas tu ne fait rien, tu ne fait pas glisser la fenêtre.
    En fait tu utilises une liste noir que tu remplie au fur et à mesure

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Par défaut
    effectivement j'étais en train d'étudier cette possibilité.

    Cependant je me demande si il n'y a pas une méthode qui mobiliserait moins de CPU et de mémoire. car pour l'instant, le simple fait de faire une boucle infini et des tests à l'intérieur, c'est assez gourmand.

    Est-ce qu'il n'existe pas une fonction du style winwait("nom fenêtre") qui met en pause le script jusqu'a l'ouverture d'une fenêtre ? C'est une fonction qui existe dans plusieurs langages (comme autoit par exemple)

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    une solution simple, dans ta boucle met :
    Ainsi tu ne test que toutes les secondes et cela devient beaucou, beaucoup moins gourmand en ressource.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Par défaut
    Oui effectivement je n'y avais pas pensé. C'est vrai qu'un test par seconde ça peut-être suffisant.

    On va dire que le problème est règlé.

    Cependant j'ai fait mon script en autoit finalement. Le résultat est celui que j'attendais et je pense l'améliorer encore.

    je sais qu'on est dans un forum vbs et non pas autoit mais je poste mon script des fois que ça intéresse quelqu'un. Et puis ce n'est pas très dur à convertir en vbs (sauf pour cette fameuse fonction winwait)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $wnd = ObjCreate ("UltraMon.Window")
    dim $WndHand[1]
     
    while 1
    	WinWait("http://webfilenet")
    	If $wnd.Find("http://webfilenet*", "", 1 , 0, 0) = True Then
    		if not inArray($WndHand,$wnd.HWnd) Then
    			$WndHand[UBound($WndHand)-1]=$wnd.HWnd
    			ReDim $WndHand[UBound($WndHand)+1]
    			$wnd.Monitor = 2
    			$wnd.ApplyChanges(0)
    		EndIf
    	EndIf
    WEnd
     
    func inArray(ByRef $MyArray,$ElRech)
    	For $enCours In $MyArray
    		If $enCours = $ElRech Then
    			return True
    		EndIf
    	Next
    	return False
    EndFunc
    PS : il manque un forum autoit sur ce super site www.developpez.net, c'est dommage

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je n'ai jamais entendu parlé d'autoit.
    Est ce un langage de script d'autrefois.
    lol je sais mes blagues sont pourries

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détecter l'ouverture d'une fenêtre
    Par Matt2094 dans le forum Delphi
    Réponses: 9
    Dernier message: 30/08/2006, 12h48
  2. Réponses: 12
    Dernier message: 06/06/2006, 12h13
  3. Erreur sur l'ouverture d'une fenêtre popup
    Par misa dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/11/2005, 15h21
  4. Ouverture d'une fenêtre ms-dos malgré l'utilisation de .pyw
    Par Ank dans le forum Général Python
    Réponses: 2
    Dernier message: 21/10/2005, 14h33
  5. [HTTPS] ouverture d'une fenêtre
    Par Boosters dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/01/2005, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo