Bonjour,
Pour que ce soit plus clair, je vais donner un exemple de ce que je dois essayer de faire:
Prenez un explorateur Windows et faites une copie d'un gros dossier. Normalement y'a la fenêtre de copie qui apparait avec une barre de progression. Cette fenêtre est au premier plan par rapport votre explorateur. Si maintenant j'ouvre une autre fenêtre (de n'importe quelle application), je ne vois plus la barre de progression. Si maintenant je repasse sur mon explorateur, la fenêtre de progression est toujours devant: elle n'est donc pas "always on top" mais elle reste au 1er plan par rapport à l'explorateur. Si je reste sur mon explorateur, la barre de progression est on top mais ne prend jamais le focus.
L'idée est que je puisse faire ça avec shell sur une application tierce (donc pas l'application qui a créé le shell)
Exemple: j'ai mon programme qui créé un shell (avec une barre de progression) et je souhaite être "on top" sur un autre programme (Word par exemple, que j'aurais désigné avec son PID)
Je n'ai pas de problème pour trouver Word via son PID (via org.eclipse.swt.internal.win32.OS). Mon souci c'est la partie "on top".
Actuellement j'ai fait un "listener" qui regarde toute les 2 secondes quelle est le pid de l'application au 1er plan dans Windows. Si c'est Word alors je fait un AttachThreadInput + SetForegroundWindow: mon shell passe bien devant.
Le souci est que cette méthode prend le focus sur Word et donc toutes les 2 secondes mon shell passe devant et prend le focus.
J'ai donc plusieurs question:
- est-ce qu'il y a une autre méthode que celle que j'ai utilisé? (le setActive ne marche pas comme je le souhaite)
- sinon comment faire pour que mon shell ne prenne pas le focus? (de la même manière que la barre de progression de copie de l'explorateur)
Merci pour vos réponses
Partager