En utilisant les WxWidgets, j'essaie de faire en sorte qu'une fenêtre
(ouverture de fichier en l'occurence) soit au premier plan du focus sous
windows. Le problème est que la méthode self.settopwindow ne suffit pas
car elle met la fenetre au premier plan relativement à python alors que
je veux que la fenêtre ait le focus absolu par rapport à toutes les
applications en cours sous windows (l'appel de cette fenetre est
déclenché par un socket, c'est donc une application tierce qui a le
focus à ce moment là...).
J'avais pensé à des appels système windows en important des dll système.
Qu'en pensez vous ? Une ou des idées/pointeurs ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Méta-MCI
Bonjour !
Ce problème est fréquent, et, AMHA, pas spécialement windows.
En pratique, c'est incroyable le nombre de logiciels qui ont de bonnes raisons, pour que certaines de leurs fenêtres apparaissent au premier plan. Dès lors, comment définir "l'ordre des priorités" ?
En pratique, j'ai deux solutions, mais pour windows uniquement.
Ces solutions sont : - topwindow.exe un logiciel qui met une fenêtre, repérée par son titre, au premier plan ; - par appel de AutoItX, la version ActiveX de AutoIt, qui permet, entre autres, de manipuler les fenêtres de windows
Cependant, je pense qu'il doit exister des possibilités similaire, en utilisant PyWinAuto (http://www.openqa.org/pywinauto), ou en cherchant dans les recoins de PyWin32 (http://sourceforge.net/projects/pywin32)
Tiens-nous au courant...
@-salutations
Michel Claveau
Bonjour !
Ce problème est fréquent, et, AMHA, pas spécialement windows.
En pratique, c'est incroyable le nombre de logiciels qui ont de bonnes
raisons, pour que certaines de leurs fenêtres apparaissent au premier plan.
Dès lors, comment définir "l'ordre des priorités" ?
En pratique, j'ai deux solutions, mais pour windows uniquement.
Ces solutions sont :
- topwindow.exe un logiciel qui met une fenêtre, repérée par son titre,
au premier plan ;
- par appel de AutoItX, la version ActiveX de AutoIt, qui permet, entre
autres, de manipuler les fenêtres de windows
Cependant, je pense qu'il doit exister des possibilités similaire, en
utilisant PyWinAuto (http://www.openqa.org/pywinauto), ou en cherchant dans
les recoins de PyWin32 (http://sourceforge.net/projects/pywin32)
Ce problème est fréquent, et, AMHA, pas spécialement windows.
En pratique, c'est incroyable le nombre de logiciels qui ont de bonnes raisons, pour que certaines de leurs fenêtres apparaissent au premier plan. Dès lors, comment définir "l'ordre des priorités" ?
En pratique, j'ai deux solutions, mais pour windows uniquement.
Ces solutions sont : - topwindow.exe un logiciel qui met une fenêtre, repérée par son titre, au premier plan ; - par appel de AutoItX, la version ActiveX de AutoIt, qui permet, entre autres, de manipuler les fenêtres de windows
Cependant, je pense qu'il doit exister des possibilités similaire, en utilisant PyWinAuto (http://www.openqa.org/pywinauto), ou en cherchant dans les recoins de PyWin32 (http://sourceforge.net/projects/pywin32)
Tiens-nous au courant...
@-salutations
Michel Claveau
jean-michel bain-cornu
Bonjour,
En utilisant les WxWidgets, j'essaie de faire en sorte qu'une fenêtre (ouverture de fichier en l'occurence) soit au premier plan du focus sous windows. Le problème est que la méthode self.settopwindow ne suffit pas car elle met la fenetre au premier plan relativement à python alors que je veux que la fenêtre ait le focus absolu par rapport à toutes les applications en cours sous windows (l'appel de cette fenetre est déclenché par un socket, c'est donc une application tierce qui a le focus à ce moment là...).
En utilisant wx.Window.Raise(myframe) (ou myframe.Raise()) on obtient un comportement standard qui est de faire clignoter l'icône de l'application sur la barre des tâches si la fenêtre est masquée, et si l'icône est visible sur la barre des tâches. On voit ça sur xp, à voir ce que ça donne sur 2000/98. C'est un comportement qui est considéré comme honnête, mais peut-être cela ne te suffit-il pas ? D'après ce que j'ai compris, l'application qui a le vrai premier plan doit donner son autorisation pour permettre à une autre fenêtre de la supplanter. Ce qui n'est pas fait dans toutes les applis. Donc il faut bricoler (avec l'API ?) mais ce n'est pas considéré comme académique. Explique à tes clients ;-) que c'est de la faute de windows... A+ jm
Bonjour,
En utilisant les WxWidgets, j'essaie de faire en sorte qu'une fenêtre
(ouverture de fichier en l'occurence) soit au premier plan du focus sous
windows. Le problème est que la méthode self.settopwindow ne suffit pas
car elle met la fenetre au premier plan relativement à python alors que
je veux que la fenêtre ait le focus absolu par rapport à toutes les
applications en cours sous windows (l'appel de cette fenetre est
déclenché par un socket, c'est donc une application tierce qui a le
focus à ce moment là...).
En utilisant wx.Window.Raise(myframe) (ou myframe.Raise()) on obtient un
comportement standard qui est de faire clignoter l'icône de
l'application sur la barre des tâches si la fenêtre est masquée, et si
l'icône est visible sur la barre des tâches. On voit ça sur xp, à voir
ce que ça donne sur 2000/98.
C'est un comportement qui est considéré comme honnête, mais peut-être
cela ne te suffit-il pas ?
D'après ce que j'ai compris, l'application qui a le vrai premier plan
doit donner son autorisation pour permettre à une autre fenêtre de la
supplanter. Ce qui n'est pas fait dans toutes les applis. Donc il faut
bricoler (avec l'API ?) mais ce n'est pas considéré comme académique.
Explique à tes clients ;-) que c'est de la faute de windows...
A+
jm
En utilisant les WxWidgets, j'essaie de faire en sorte qu'une fenêtre (ouverture de fichier en l'occurence) soit au premier plan du focus sous windows. Le problème est que la méthode self.settopwindow ne suffit pas car elle met la fenetre au premier plan relativement à python alors que je veux que la fenêtre ait le focus absolu par rapport à toutes les applications en cours sous windows (l'appel de cette fenetre est déclenché par un socket, c'est donc une application tierce qui a le focus à ce moment là...).
En utilisant wx.Window.Raise(myframe) (ou myframe.Raise()) on obtient un comportement standard qui est de faire clignoter l'icône de l'application sur la barre des tâches si la fenêtre est masquée, et si l'icône est visible sur la barre des tâches. On voit ça sur xp, à voir ce que ça donne sur 2000/98. C'est un comportement qui est considéré comme honnête, mais peut-être cela ne te suffit-il pas ? D'après ce que j'ai compris, l'application qui a le vrai premier plan doit donner son autorisation pour permettre à une autre fenêtre de la supplanter. Ce qui n'est pas fait dans toutes les applis. Donc il faut bricoler (avec l'API ?) mais ce n'est pas considéré comme académique. Explique à tes clients ;-) que c'est de la faute de windows... A+ jm