Bonjour,
j'ai trouvé sur Internet comment trouver l'adresse IP interne.
Exisre-t-il un moyen de trouver l'adresse de l'IP externe lorsque
l'ordinateur est connecté à un site avec un un explorer tel que
Firefox ou Internet-explorer ?
Merci
Version imprimable
Bonjour,
j'ai trouvé sur Internet comment trouver l'adresse IP interne.
Exisre-t-il un moyen de trouver l'adresse de l'IP externe lorsque
l'ordinateur est connecté à un site avec un un explorer tel que
Firefox ou Internet-explorer ?
Merci
Salut Pasqualini
Regarde ce Post, je ne sais pas si c'est ce que tu desire
Merci, je vais essayer et je dirai si cela convient.
Je travaille avec C++Builder XE.
La ligne :
génère une erreur :Code:
1
2 hWinInet = LoadLibrary("WININET.DLL"); //Chargement de la dll
"[BCC32 Erreur] Connexion.cpp(24): E2034 Impossible de convertir 'char const[12]' en 'const wchar_t *'
Contexte d'analyseur complet"
Comment faut-il alors déclarer la variable hWinInet ?
Merci
J'ai trouvé :
Toutefois cela me dit si l'ordinateur est connecté, mais ne donne pas l'adresse IP, ou les adresses IP, des sites affichés dans le navigateur.Code:
1
2
3
4
5 HMODULE hWinInet; . . hWinInet = LoadLibraryA("WININET.DLL"); //Chargement de la dll
Ce que cherche à obtenir c'est ce que fait le Widget "Network Meter" qui affiche, par exemple,
"Ext. IP 60.50.43.176".
En fait, j'obtiens l'adresse externe de mon PC en utilisant le composant TIdHttP :
Code:
1
2
3 AnsiString asAdresse = IdHTTP1->Get("http://iplookup.flashfxp.com/"); ShowMessage(asAdresse);
Pour ouvrir IE et recuperer la chaine de connection il est possible de faire comme ceci
.cpp
A partir de l'URL avec ShelleExecute on peut peut etre executer un ping sur cet URL et recuperer " 60.50.43.176 "Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include <utilcls.h> // <----- ne pas oublier #include <ComObj.hpp> // <----- utile dans certains cas //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; Variant vMSIEApp; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // demarrer IE // Cree un objet unique non initialisé de la classe spécifiée // par le paramètre 'InternetExplorer.Application' try { vMSIEApp = Variant::GetActiveObject("InternetExplorer.Application"); } catch(...) { vMSIEApp = Variant::CreateObject("InternetExplorer.Application"); } //Rends l'application IE visible vMSIEApp.OlePropertySet("Visible", true); // permet d'attendre le chargement de la page while(vMSIEApp.OlePropertyGet("ReadyState") != READYSTATE_COMPLETE); //11 - LocationName: String vEIValue = vMSIEApp.OlePropertyGet("LocationName"); //12 - LocationURL: vEIValue = vMSIEApp.OlePropertyGet("LocationURL"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { //Fermer IE vMSIEApp.OleFunction("Quit"); // on libere les Variants vMSIEApp = Unassigned; } //---------------------------------------------------------------------------
J'ai essayé.
Cela a bien fonctionné une première fois.
Je n'ai pas compris pourquoi le programme lançait
une nouvelle instance de InternetExplorer.
Mais ensuite, sans rien changer j'ai le message suivant :
"Un arrêt du systèmea déjà été programmé, progID :
InternetExplorer application"
Si tu a essaye mon code avec le tien c'est normal qu'il y ai deux fois IE, tu peu t'en passer car tu recupere ton URL par un autre moyen, essaye avec ShellExecute, buffer recupere l'IP
Je n'ai pas teste il faudra surement adapterCode:
1
2 ShellExecute(Form1->Handle, "open", "ping", http://iplookup.flashfxp.com/, buffer, SW_SHOWNORMAL);
Pour que le programme se compile et s'exécute, j'ai écrit :
Mais il n'y a rien dans le buffer.Code:
1
2
3
4
5
6
7
8 wchar_t buffer[256]; ShellExecute(fConnexion->Handle, L"open", L"ping", L"http://iplookup.flashfxp.com/", buffer, SW_SHOWNORMAL ); AnsiString asBuffer = AnsiString(buffer); ShowMessage(asBuffer);