Fenêtre en premier plan sans focus [Résolu]

Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
24 juin 2015
- - Dernière réponse : racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
- 15 juin 2010 à 22:23
Bonjour,

Je cherche depuis plusieurs jours à afficher une application de mon cru (une appli AIR) en premier plan, mais sans qu'elle prenne le focus aux autres fenêtres windows. J'ai déjà essayé le code suivant :

HWND hFenetre = FindWindow("ApolloRuntimeContentWindow", NULL);
ShowWindow(hFenetre, SW_SHOWNOACTIVATE);
SetWindowPos(hFenetre, HWND_TOPMOST, 10, 10, 500, 500, SWP_NOACTIVATE);

Il me met bien ma fenêtre en premier plan sans lui attribuer le focus à l'exécution de ce code. Mais ce que je souhaiterais, c'est que même quand je clique sur la fenêtre de mon application, qu'ell ne prenne jamais le focus.

Le but de cette manip est de pouvoir réaliser un clavier virtuel et, ayant déjà le code pour envoyer les caractères tapés dans le buffer clavier, il serait donc intéressant que la fenêtre cible (Bloc-notes Windows, barre d'adresse IE, etc ...) garde le focus pendant que je tape sur mon clavier virtuel.

Merci par avance pour votre aide !
Afficher la suite 

4/24 réponses

Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
24 juin 2015
0
Merci
Whaouh !

Alors là, chapeau bas !! Merci plein beaucoup de fois !!

Sauf que j'ai un petit souci, car chez moi, ça ne marche pas ... J'ai créé 2 projets sous Dev C++ (un pour l'exécutable, un pour la DLL), et j'ai copié pour chacun des 2 projets le code que tu as mis en ligne. Mon premier souci a été que "PTHREAD_START_ROUTINE" me générait une erreur de compilation. Après investigation, il semblerait que ce soit un autre nom pour "LPTHREAD_START_ROUTINE", et j'ai donc fait le changement dans mon code. Maintenant, ça compile bien, mais lorsque je lance ton code et que clique sur "Injecter", rien ne semble injecté (je n'ai pas la popup "Ce message prouve que ..." quand je ferme la fenêtre cible), alors que l'exécutable que tu as fourni dans le zip marche.

Je cherche d'où ça peut venir, mais pour l'heure, je ne trouve pas. J'ai également essayé avec Visual Studio (et donc sans changer "PTHREAD_START_ROUTINE" cette fois), mais pareil, rien ne se passe.

Saurais-tu m'éclairer ?
Commenter la réponse de thenaoh
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
7
0
Merci
Salut,
Mets tes questions dans la page du code source. Ainsi, les utilisateurs de Dev C++ pourraient t'aider. Il est possible que ta dll soit mal générée. Précise aussi ta version de Visual. Dès que je rentre ce soir, je verrai ce que je peux faire.
A bientôt.
Commenter la réponse de racpp
Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
24 juin 2015
0
Merci
Précisions concernant le problème rencontré (je vais aussi le préciser dans la page du code source) : Ton code fonctionne lors de la 1ère utilisation ! Si je ferme et que je relance ton appli pour reproduire le test, là, plus rien ne se passe. N'y aurait-il pas un problème de ressource quelconque non libérée ? Car après avoir lancé puis quitté ton appli, je ne peux pas supprimer la DLL "wndprocdll.dll" (par contre je peux la renommer, ainsi que renommer le répertoire parent ... Comprenne qui pourra ...).

Merci
Commenter la réponse de thenaoh
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
7
0
Merci
Regarde la réponse dans la page du code source.
Commenter la réponse de racpp