Activer fenêtre si elle existe

Résolu
Messages postés
8
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
28 août 2006
-
Messages postés
8
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
28 août 2006
-
Bonjour, je débute en java et j'aimerai savoir si il existe une commande qui permet de voir si une fenêtre est déjà ouverte.


Je m'explique, je fais une frame qui permet l'ouverture d'un programme.
Si ce programme est déjà ouvert, mais réduit ou en arrière-plan, il
faudrai mettre la fenêtre de ce programme au premier plan et non ouvrir
une nouvelle fois le programme.

Est-ce possible?

Merci d'avance

SkAPunkMAn

6 réponses

Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Petite correction pour
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
ca attrend que le process soit fini c'est l'equivalence de
(java)
Process p = Runtime...
p.waitFor();

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

si le programme n'est pas java il te faut utiliser autre chose que du java pour le faire
sinon si il est java utilise fenetre.isVisible()

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
8
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
28 août 2006

Oui, le programe est en java, mais il n'a pas été créé par moi et
existe déjà. Il n'est donc pas dans mon projet java. Est-ce malgré tout
possible?

N'y a t-il pas une api windows qui permettrai de récuperer les noms des
fenêtres ouvertes afin de comparer avec celle que je cherche?

Merci

SkAPunkMAn
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
un truc qui est sur c est que tu pourra pas le faire en java !!
dois surement y avoir une api windows pour ca mais tu devra te palucher du JNI a mon avis pour y arriver !!
force et honneur,
j peux t aider bien plus que ca !
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

Mouep une api Windows en java ....... je ne le redirai jamais assez si c'est pour faire du windows le mieux n'est pas d'utiliser java mais du .Net ..... ralala ces jeunes :D

sinon super_toinou a raison il te faut toucher a du JNI et pour ce faire tu as 2 solutions

soit tu lance le process via windows genre avec ShellExecute exemple :

HWND hwndExec = NULL; //ici tu stoquera le handle de la fenetre comme ca tu pourras tester
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = hwndExec
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "C:\\monAppli.exe";//ici le nom de l'application      
ShExecInfo.lpParameters = "";   
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;   

ShellExecuteEx(&ShExecInfo);
//WaitForSingleObject(ShExecInfo.hProcess,INFINITE);//pas obligatoire mais comme ca tu attend que l'application soit bien executé
TerminateProcess(ShExecInfo.hProcess, 0);//pour killer le process

sinon tu as plus simple mais assez contraignant :

HWND hwndExec = FindWindow(NULL, "TitleDelaFenetre");//le titre correspond a celui de la barre de titre en au a gauche, ou celui afficher dans la barre des taches en bas je sais plus);

HWND hwndExec = FindWindow("NomClass", NULL);//Nom class c'est le nom que tu donne a la classe fenetre lors de sa creation

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
8
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
28 août 2006

Je vais essayé avec

HWND hwndExec = FindWindow(NULL, "TitleDelaFenetre");//le titre
correspond a celui de la barre de titre en au a gauche, ou celui
afficher dans la barre des taches en bas je sais plus);


HWND hwndExec = FindWindow("NomClass", NULL);//Nom class c'est le nom que tu donne a la classe fenetre lors de sa creation

et si ça ne va pas comme je veux, je tenterai l'autre.

Merci pour vos réponses.
SkAPunkMAn