Bonjour,
J'ai voulu faire un programme permettant de garder une fenetre au dessus de tous les autres avec la fonction setwindowpos() de l'api win32. Cela marche bien en regle générale, seulement quand je suis face a un processus qui tourne qui est un jeux video, ma fenetre repasse en arriere plan.
la meilleure chose que j'ai obtenu c'est de faire clignoter ma fenetre avec le jeux video tantot devant, tantot derriere.
J'ai donc essayé d'intercepter les messages WM_WINDOWPOSCHANGING et WM_WINDOWPOSCHANGED avec un hook dans une dll. Je les intercepte bien mais j'ai deux petits problemes:
1) dans les messages de type WM_WINDOWPOSCHANGED je trouve bien dans les parametres qqchose de relatif a setwindowpos() avec le deuxieme parametre etant HWND_TOPMOST (qui se traduit par un 0 et un 6163 a l'interieur mais ca n'a pas grande importance).
Mais je ne trouve rien dans le message de type WM_WINDOWPOSCHANGING des parametres relatifs a la mise en premier plan.
A croire qu'il y a un aquitement de l'ordre mais pas d'ordres, enfin pas visible pour moi.
2) quand j'intercepte les messages WM_WINDOWPOSCHANGING et WM_WINDOWPOSCHANGED, je n'arrive pas a faire que windows n'en tienne pas compte, c'est a dire que je n'arrive pas a les intercepter sans qu'ils soient ensuite relayés. j'ai bien essayé de returner 1 au lieu de callnexthook() comme pour les hook sur le clavier mais cela ne fait rien. ca n'arrive qu'a faire chanter bizarement SPY++. Donc j'imagine qu'il ne faut pas returner 1 mais autre chose. quoi?
Voila, si vous avez eu le meme probleme, ou simplement une idee interressante me permettant d'avancer un peu, parce que je perds beaucoup de temps dans des recherches infructueuses.
Merci d'avance
juju