Activer fenêtre si elle existe

Résolu
SkaPunkMan Messages postés 8 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 28 août 2006 - 8 août 2006 à 11:42
SkaPunkMan Messages postés 8 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 28 août 2006 - 8 août 2006 à 16:07
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

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
8 août 2006 à 15:20
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
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
8 août 2006 à 13:18
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
0
SkaPunkMan Messages postés 8 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 28 août 2006
8 août 2006 à 14:14
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
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
8 août 2006 à 14:20
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
8 août 2006 à 14:46
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
0
SkaPunkMan Messages postés 8 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 28 août 2006
8 août 2006 à 16:07
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
0
Rejoignez-nous