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

VB.NET Discussion :

Savoir si une fenêtre est recouverte par d'autres


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Mars 2011
    Messages : 105
    Points : 153
    Points
    153
    Par défaut Savoir si une fenêtre est recouverte par d'autres
    Bonjour,

    Mon programme tourne en arrière plan et peut, à la demande de l'utilisateur, afficher une fenêtre d'aide. Cette fenêtre doit rester visible tant que l'utilisateur le veux.
    Si d'autres application viennent recouvrir partiellement cette fenêtre, c'est ok mais elle ne doit pas disparaitre complètement.
    Actuellement je ne me casse pas la tête en venant périodiquement remettre systématiquement cette fenêtre au premier plan avec un timer.
    C'est un peu bourrin. D'où ma question:
    Comment savoir si une fenêtre (qui appartient à mon programme) est totalement recouverte par d'autres fenêtres (aux origines diverses) ?

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    Tray icon est ton ami !!!
    Comment savoir si une fenêtre (qui appartient à mon programme) est totalement recouverte par d'autres fenêtres (aux origines diverses) ?
    Cela releve du "stealing" ou vol ,et le System Windows ne le permet pas pour ce motif !!!

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Mars 2011
    Messages : 105
    Points : 153
    Points
    153
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    Cela releve du "stealing" ou vol ,et le System Windows ne le permet pas pour ce motif !!!



    Tu peux expliquer ??? car là je pige pas ...

    Je cherche juste à savoir comment détecter qu'une fenêtre qui appartient à mon programme est totalement (ou même seulement partiellement) masquée par d'autres fenêtres.
    Je vois pas en quoi ça devrait inquiéter le FBI

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    Re

    Ton appli sera utilise par un autre user ,et si ta fenetre d'aide est constamment à l'avant plan ,elle l'empechera d'acceder d'autre fentres ,si elle les recouvre totalement ....

    Le tray icon resout ton probleme parfaitement !!!

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Mars 2011
    Messages : 105
    Points : 153
    Points
    153
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    Re
    Ton appli sera utilise par un autre user ,et si ta fenetre d'aide est constamment à l'avant plan ,elle l'empechera d'acceder d'autre fentres ,si elle les recouvre totalement ....
    C'est ce qui se passe actuellement puisque cette fenêtre est constamment remise au premier plan par un timer.
    Mais bon, tu réponds avec en tête souris, barre des tâches et compagnie...

    Il faut donc que j'explique un peu plus:

    Mon appli sert à "piloter" via une télécommande infra rouge ou un clavier tout un tas d'autres applis multimédia.
    Donc, l'utilisateur a une TC et balance des commandes. Pour ne pas balancer n'importe quoi, il peut afficher une fenêtre d'aide (toujours en appuyant sur une touche de la TC) où sont marquées les actions des touches. Cette fenêtre se superpose à toutes celles pouvant être ouvertes et je ne veux pas qu'elle puisse être recouverte complètement.

    Exemple avec kodi (xbmc):



    La fenêtre en question est celle du bas.

    Dans l'exemple, si l'utilisateur appui sur la touche verte de la TC, kodi va passer en fullscreen et (peut être) complètement recouvrir la fenêtre d'aide.
    Dans l'état actuel, s'il le fait, le timer ramènera la fenêtre au premier plan mais je voudrais ne le faire que si la fenêtre est totalement recouverte. Si elle est encore partiellement visible, je ne fais rien.
    voila, j'espère que c'est plus clair.

  6. #6
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    Trayicon est le terme utilise courrament pour designer le composant NotifyIcon....Avast en utilise un avec des menus contextuels..Un Right-Click sur le notifycon permet d'acceder à plusieurs fenetres...

    code exemple vb.net
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     
    Public Class MainForm
        Private CanClose As Boolean
        Public ContextMenu1 As New ContextMenu
        Public NotifyIcon1 As New NotifyIcon
        Private mnuShowHideApp, MnuSuspendApp, mnuExitApp, mnuShowHideHelp As MenuItem
     
        Private frmHelp As FormHelp = New FormHelp
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
            Me.ShowInTaskbar = False
            Me.TopMost = True
            Me.Visible = False
     
            frmHelp.ShowInTaskbar = False
            frmHelp.TopMost = True
            frmHelp.Visible = False
     
            CreateIconMenuStructure()
            AddHandler mnuShowHideApp.Click, AddressOf AppShowHide
            AddHandler mnuExitApp.Click, AddressOf ExitApp
            AddHandler mnuShowHideHelp.Click, AddressOf ShowHideHelp
     
     
        End Sub
        Public Sub CreateIconMenuStructure()
            ' Add menu items to shortcut menu.
            mnuShowHideApp = ContextMenu1.MenuItems.Add("&AppShowHide Application")
            MnuSuspendApp = ContextMenu1.MenuItems.Add("S&uspend Application")
            mnuExitApp = ContextMenu1.MenuItems.Add("E&xit")
            mnuShowHideHelp = ContextMenu1.MenuItems.Add("&ShowHideHelp")
            ' Set properties of NotifyIcon component.
            NotifyIcon1.Icon = My.Resources.Annotate_Default
            'NotifyIcon1.Icon = New System.Drawing.Icon _
            '   (System.Environment.GetFolderPath _
            '   (System.Environment.SpecialFolder.Personal) _
            '   & "\Icon.ico")
            NotifyIcon1.Text = "Right-click me!"
            NotifyIcon1.Visible = True
            NotifyIcon1.ContextMenu = ContextMenu1
        End Sub
     
        Private Sub ExitApp(ByVal sender As Object, ByVal e As EventArgs)
            CanClose = True
            Me.Close()
        End Sub
     
        Private Sub ShowHideHelp(ByVal sender As Object, ByVal e As EventArgs)
     
            frmHelp.Visible = Not frmHelp.Visible
        End Sub
     
        Private Sub AppShowHide(ByVal sender As Object, ByVal e As EventArgs)
            Me.Visible = Not Me.Visible
        End Sub
     
     
        Private Sub MainForm_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
            If Not CanClose Then
                e.Cancel = True
            End If
     
        End Sub
    End Class
     
    Public Class FormHelp
     
        Private Sub FormHelp_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
            e.Cancel = True
        End Sub
    End Class
    bon code.......

Discussions similaires

  1. [Lazarus] [0.9.29] Savoir si une fenêtre est ouverte par ShowModal ou pas
    Par Invité dans le forum Lazarus
    Réponses: 1
    Dernier message: 12/10/2010, 11h13
  2. Savoir si une fenêtre est modale ou pas
    Par manu_b dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/06/2008, 15h32
  3. Savoir si une fenêtre est ouverte ou pas
    Par zizoux5 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2007, 18h26
  4. Savoir si une fenêtre est déjà créer
    Par matt8-5 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 09/02/2007, 14h28
  5. Comment savoir si une fenêtre est maximisée ?
    Par Silverstone dans le forum Windows
    Réponses: 4
    Dernier message: 20/09/2006, 21h01

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