Cacher la fenetre d'internet explorer a son lancement

Résolu
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 - 20 mai 2004 à 02:36
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 - 20 mai 2004 à 14:32
ya t'il quelqu'un qui sait comment lancer internet explorer, tel que sa fenetre principale soit cachée des qu'il soit lancé? (on le lance avec shellexecute ou createprocess, pas un lancement manuel).
2 possibilités selon moi :
passer le bon parametre a iexplore.exe, mais ca me parait improbable qu'il admette un parametre pr ke sa fenetre principale ne s'affiche pas.
cacher la fenetre des qu'il est lancé avec ShowWindow (dans ce cas qu'est ce que je mets exactement ?).

mais la 2e solution entraine ss doute que la fenetre d'internet explorer soit affichée pendant un court laps de temps, ce que je ne veux pas.

peut etre un autre moyen avec des bons paramètres pour CreateProcess, j'ai cherché mais sans succés, quelqu'un sait ?

merci.

6 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 mai 2004 à 11:23
Yep,
C'est simple a faire, faut utiliser le flag SW_HIDE.
Voici un bout de code simple et qui mqrche :)
#include <windows.h>

int main()
{
HWND hMain = GetActiveWindow();

ShellExecute(hMain,"open","iexplore","http://www.cppfrannce.com",0,SW_HIDE);

return 0;
}


Pour t'en convaincre, ferme toute les fenetres Explorer, puis lance le programme et va regarder dans le gestionnaire des taches ... Tu auras quelquechsoe comme IEXPLORE.EXE alors qu'aucune fenetre n'est visible...
Pour fermer la fenetre tu te debrouilles ensuite avec le processid retourné par ShellExecute et les API.

A++ et bonne prog ...

Samir
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 mai 2004 à 11:27
Je viens d'essayer, pas de prob.
Repris sur exemple deja mis en source.

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
PROCESS_INFORMATION pi;
STARTUPINFO si = {sizeof(si)};
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
if(!CreateProcess(0,
"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE http://brunews.free.fr/", 0, 0, 0,
CREATE_SUSPENDED, 0, 0, &si, &pi)) return 0;
ResumeThread(pi.hThread);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return 0;
}

ciao...
BruNews, Admin CS, MVP Visual C++
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 mai 2004 à 11:57
BruNews> Les deux solutions qu'on propose sont identiques sur les résultats obtenus ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 mai 2004 à 12:11
Je pense, j'ai juste repris ce qui etait deja mis.
A part que ShellExecute reprend une eventuelle fenetre IE existante alors que CreateProcess en fait une nouvelle.

Le serveur CS merde, je n'ai pas de mail sur les questions reponses.

ciao...
BruNews, Admin CS, MVP Visual C++
0

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

Posez votre question
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
20 mai 2004 à 13:11
ok merci a tous, les 2 résultats marchent chez moi ;)
enfin shellexecute cree aussi un nouveau process et se contente pas d'ouvrir une nvelle fenetre ds un IE déja existant (du- chez moi, peut etre cela varie t'il d'une conf a l'autre? on peut bien choisir de lancer l'explorateur en plusieurs process ou en plsrs threads du meme process)
shellexecute a de toutes facons "l'avantage" de ne pas devoir spécifier le chemin d'acces d'IE qui peut changer d'un PC a l'autre

merci encore ;)
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
20 mai 2004 à 14:32
ha j'ai encore une question.
comment récuperer le pid d'un processus lancé avec shellexecute ? (avec createprocess j'ai fait c'est plus simple)
j'ai utilisé shellexecutex, et avec ca j'ai pu récuperer le handle du processus crée, mais a part de celui ci, comment je trouve le pid ? (sachant ke j'ai trouvé sur msdn une fonction GetProcessId mais qui est implémenté uniquement sur XP SP1, et que mon header windows.h ne contient de toutes facons pas... dc sans doute ya un autre moyen)
il faudrait la fonction 'réciproque' de openprocess
0
Rejoignez-nous