Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
304 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Manipulations IE6 par le code C++

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Manipulations IE6 par le code C++

n°1588889
katopex
Posté le 19-07-2007 à 15:54:27  profilanswer
 

Bonjour, voilà mon code :
 
(qui permet d'ouvrir une fenetre internet à une adresse specifiee)
 

Code :
  1. LPSTR urlComplete = "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE http://www.test.fr";
  2. LPSTR urlComplete2 = "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE http://www.test2.fr";
  3. STARTUPINFO si = {sizeof(si)};
  4. si.dwFlags = STARTF_USESHOWWINDOW;
  5. si.wShowWindow = SW_SHOWNORMAL;
  6. if (&pi
  7.    && !(pi.hProcess))
  8. {
  9.  CreateProcess(0, urlComplete, 0, 0, 0, CREATE_SUSPENDED, 0, 0, &si, &pi);
  10.  ResumeThread(pi.hThread);
  11. }
  12. else
  13. {
  14.  //TerminateProcess(pi.hProcess,0);
  15.  UpdateResource(pi.hProcess, RT_RCDATA, 0, 0, urlComplete2, 0);
  16. }


 
Je cherche desesperement à mettre à jour ma fenetre IE avec l'adresse : urlComplete2
mais je ne trouve rien pour le faire, TerminateProcess fonctionne bien sur la bonne fenetre IE (ferme ma fenetre),
mais je ne sais pas me servir de UpdateResource et ne suis pas sur que ce ca permettre de rafraichir IE6 a la nouvelle adresse...
 
Please Help !

mood
Publicité
Posté le 19-07-2007 à 15:54:27  profilanswer
 

n°1589195
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-07-2007 à 10:37:27  profilanswer
 

euh, tu te gourres sur toute la ligne là :
1) ton code n'est pas du C++ mais du C
2) CreateProcess() permet juste de créer et de lancer le processus IE, éventuellement avec une page d'accueil en argument, mais en aucun cas il ne te permet de communiquer avec IE. si tu veux communiquer avec IE, soit tu utilises le controle que IE expose (bon courage pour l'utiliser en C), soit tu utilises la librairie WinINet, faite pour ça : http://msdn2.microsoft.com/en-us/library/aa385331.aspx
3) UpdateResource ne sert pas du tout à rafraichir IE6, c'est juste pour mettre à jour les ressources contenues dans un exécutable (images, texte, etc...)

n°1589718
nmeuret
Posté le 21-07-2007 à 17:15:57  profilanswer
 

1) je ne vois pas trop pourquoi ce que ce code serait plus C que C++ ... Tu prends VStudio, tu ouvres un projet MFC et tu mets ce code dans une méthode ... ca marche, non ?
 
2) Je ne vois pas pourquoi on ne pourais pas utiliser un ActiveX depuis du C : COM n'est pas reservé au C++, aucun problème en C.
 
3) WinINet ne sert pas à 'communiquer' avec IE. IE repose sur Wininet qui est la DLL de Windows comprenant les protocoles internet (HTTP, FTP ...).

n°1590112
katopex
Posté le 23-07-2007 à 13:33:12  profilanswer
 

Ok merci,
 
Effectivement, mon prog est sous visual studio, je n'utilise pas les MFC, mais ca fonctionne
quand même.
 
C'est du code qui fait parti d'une de mes methode (appelée pour l'ouverture de IE à une adresse
qui correspond à une autre appli intranet) ca fonctionne avec les bons #include (windows.h)
 
Je vais chercher du côté de l'ActiveX expose par IE alors !
 
Merci de votre aide

n°1590187
katopex
Posté le 23-07-2007 à 14:27:34  profilanswer
 

Bon,
 
en fait, j'ai cherché du côté de la librairie WinInet qui effectivement,
et j'ai trouvé quelque chose dans MSDN sur l'utilisation de HINTERNET Handles
 
Ceci dit, j'ai intégré ce qu'il y a dans MSDN à mon code :
 

Code :
  1. HINTERNET hRootHandle, hOpenUrlHandle;
  2. hRootHandle = InternetOpen(
  3.                            TEXT("Example" ),
  4.                            INTERNET_OPEN_TYPE_DIRECT,
  5.                            NULL,
  6.                            NULL,
  7.                            0);
  8. hOpenUrlHandle = InternetOpenUrl(
  9.                               hRootHandle,
  10.                               TEXT("http://www.server.com/default.htm" ),
  11.                               NULL,
  12.                               0,
  13.                               INTERNET_FLAG_RAW_DATA,
  14.                               0);
  15. // Close the handle created by InternetOpenUrl, so that the
  16. // InternetOpen handle can be closed.
  17. InternetCloseHandle(hOpenUrlHandle);
  18. // Close the handle created by InternetOpen.
  19. InternetCloseHandle(hRootHandle);


 
 et ca compile, mais au moment de faire le link,
il n'arrive pas à résoudre les liens externes pour
 
InternetCloseHandle
InternetOpenA
InternetOpenUrlA
 
Je n'arrive pas à comprendre pourquoi, pourtant j'ai bien fait l'include du Wininet.h
 
 

n°1590378
katopex
Posté le 23-07-2007 à 17:30:11  profilanswer
 

Oups,
 
ca ne fonctionne pas, j'ai l'impression que WinInet ne fonctionne que sous Windows CE...
 
C'est rageant car ca avait l'air de bien faire ce que je souhaitais.

n°1590444
ganply
Posté le 23-07-2007 à 21:45:14  profilanswer
 

Pourquoi ne pas fermer le processus de ton url 1 et en relancer un autre avec l'url 2 en argument ?

n°1590487
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-07-2007 à 00:06:38  profilanswer
 

katopex a écrit :


il n'arrive pas à résoudre les liens externes pour
 
InternetCloseHandle
InternetOpenA
InternetOpenUrlA
 
Je n'arrive pas à comprendre pourquoi, pourtant j'ai bien fait l'include du Wininet.h
 
 


inclure le .h ne suffit pas, il faut aussi rajouter wininet.lib dans la liste des libs à linker

n°1590490
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-07-2007 à 00:11:32  profilanswer
 

nmeuret a écrit :

1) je ne vois pas trop pourquoi ce que ce code serait plus C que C++ ... Tu prends VStudio, tu ouvres un projet MFC et tu mets ce code dans une méthode ... ca marche, non ?
 
2) Je ne vois pas pourquoi on ne pourais pas utiliser un ActiveX depuis du C : COM n'est pas reservé au C++, aucun problème en C.
 
3) WinINet ne sert pas à 'communiquer' avec IE. IE repose sur Wininet qui est la DLL de Windows comprenant les protocoles internet (HTTP, FTP ...).


1) oui ça marche, mais un projet MFC utilise les ... MFC, donc des classes qui encapsulent Win32 (et donc du C++). on utilise Win32 en C, et les MFC en C++
2) j'ai pas dit que ça marchait pas, mais que c'était un poil plus chiant à utiliser en C qu'en C++ ou autre langage objet
3) là encore, je n'ai pas dit que Wininet servait à communiquer avec IE, mais à gérer les échanges avec le protocole HTTP, entre autres, et donc permettait de communiquer avec le web

n°1590544
katopex
Posté le 24-07-2007 à 09:06:05  profilanswer
 

ok pour la lib wininet.lib j'avais fini par comprendre qu'il fallait la rajouter,
 
mais sinon, mon code ne fait rien, c'est pour ca que je pense que, comme  
c'est précisé dans MSDN,
il ne doit fonctionner que sous Windows CE.
 
Va falloir que je cherche encore un peu...
 
Merci bcp de votre interet, et si vous avez encore des idées...

mood
Publicité
Posté le 24-07-2007 à 09:06:05  profilanswer
 

n°1591386
nmeuret
Posté le 25-07-2007 à 16:26:38  profilanswer
 

Je ne comprends toujours pas cette histoire de WinInet ...
 
Dans le code que tu donnes, tu vas ouvrir une session HTTP, et c'est tout. Rien à voir avec IE.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Manipulations IE6 par le code C++

 

Sujets relatifs
Modifier les options avancée IE6 par le codePb de menu déroulant étrange sous IE6
Code pour changer les valeurs dans un shapesheet[BATCH/cURL] Selectionner seulement une partie du code
[aide] avec quel langage est codé linux ?Qu'est-ce qui ne vas pas dans mon code php ?
Sauvegarder des paramètres et les utiliser dans un code FortranAide pour mon code
Nettoyer un code, mettre en relief, insérer des liens 
Plus de sujets relatifs à : Manipulations IE6 par le code C++


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR