SkaPunkMan
Messages postés8Date d'inscriptionmercredi 9 mars 2005StatutMembreDernière intervention28 août 2006
-
8 août 2006 à 11:42
SkaPunkMan
Messages postés8Date d'inscriptionmercredi 9 mars 2005StatutMembreDernière intervention28 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.
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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 ..."
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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 ..."
SkaPunkMan
Messages postés8Date d'inscriptionmercredi 9 mars 2005StatutMembreDernière intervention28 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.