Bonjour,

Récemment j'ai installé un utilitaire, que j'ai développé, dans une entreprise (sur l’intégralité des clients du domaine) et tous les postes fonctionnent correctement sauf un. Il n'a pas une configuration différente des autres (Win7 en 32 bit) pourtant.

En fait, l'utilitaire fonctionne mais une fois qu'on double clique sur une cellule, il est censé mettre le focus sur la fenêtre de firefox (depuis lequel on ouvre l'utilitaire). J'ai essayé toutes les variations de fonction (depuis user32.dll) pour mettre la fenêtre au premier plan, rien à faire. Et j'ai besoin d'avoir le focus dessus pour lui envoyer une combinaison de touche (aller à un lien depuis l'onglet courant). Voici les fonctions que j'ai utilisé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SetActiveWindow
SwitchToThisWindow
BringWindowToTop
SetForegroundWindow
Et j'ai également essayé de faire un :

Avant une de ces fonctions, mais rien y fait, impossible d'afficher la page du processus firefox en premier plan sur ce poste (alors que chacune des alternative fonctionne chez moi et sur d'autres postes).

J'ai également essayé d'utiliser les AutomationElement (parues avec le Framework 3). Une fois encore, ça fonctionne très bien chez moi, mais pas chez le client. Dans ce cas là, le programme me renvoit une erreur "target element cannot receive focus".

Du coup pour analyser le problème j'ai téléchargé UISpy.exe (du SDK de windows) et j'ai regardé la propriété "IsKeyboardFocusable". Firefox est à "true" donc il n'y aucune raison qu'il me renvoit cette erreur. J'ai essayé de reproduire le problème chez moi et j'ai remarqué que spotify était à false (chez moi firefox est à true), donc AutomationElement me renvoit la même erreur... Et toutes les fonctions user32.dll citées plus haut fonctionnent sur spotify, donc cela ne vient pas de cette propriété.

Je commence gentiment à perdre la tête sur ce problème. L'utilisateur est dans les admins du domaine et ça ne marche pas qu'on lance l'application en admin du domaine ou directement depuis son utilisateur. Quant à firefox, il n'est pas lancé avec des privilèges plus elevés, il est lancé avec le même utilisateur que celui qui lance mon utilitaire... Et j'ai essayé désactivé l'UAC de Windows par acquis de conscience : ça ne change rien.

Quelqu'un aurait une petite idée ? Le fichier user32.dll peut-il être corrompu ? Peut-il y avoir un autre problème de droits ?

Merci de votre aide