begin process at 2012 05 29 10:07:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Réseau & Internet

 > 

IP Manager


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

IP Manager

jeudi 6 août 2009 à 17:27:21 | IP Manager

Elixyr

Bonjour a tous,

Alors voila: en fait je suis en train de faire un "IP Manager"... fenetre qui permet d'afficher son Adresse IP en un clic... ca c'est ok, je me suis fait une belle fenetre.
On clic, ca marche.

Par contre, j'aimerais en faite acceder directement au meme possibilité que la fenetre parametre TCP/IP pour modifier soit meme sont adresse avec le masque ou cliquer pour obtenir "automatiquement" une adresse IP.

Quelqu'un pourrait m'aider a inserer ca dans mon projet.




Merciiiiiiii

samedi 8 août 2009 à 11:55:59 | Re : IP Manager

rt15

Membre Club Administrateur CodeS-SourceS

Salut,

Regarde par du côté de IPHelper (Windows 2000 mini) sur la msdn, tu as par exemple IpRenewAddress.

Ou tu peux utiliser WMI et la classe Win32_NetworkAdapterConfiguration.

samedi 8 août 2009 à 14:01:22 | Re : IP Manager

Elixyr

Hello,

Merci pour ta réponse (ainsi que pour le MP de Glarys)

Après beaucoup de recherche j'ai trouvé quelques code sources (rt15 ton IpHelper semblerai exactement ce que je cherche)

Par contre il m'es impossible d'intégrer aucun des codes sources trouvé, même le faire en exe seul. Quand je l'insere il me trouve des tonnes d'erreur et impossible de les compiler. J'suis débutant en la matière (mes cours remontent a trop loin) alors je vous explique même pas la galère. Je nage en eau trouble

Est ce que une âme charitable serait capable de m'insérer ça dans mon projet existant??

samedi 8 août 2009 à 14:21:43 | Re : IP Manager

rt15

Membre Club Administrateur CodeS-SourceS

Je vais jeter un coup d'oeil. Mais en attendant, peux tu poster ici le contenu du MP de Glarys s'il te plait ?

samedi 8 août 2009 à 15:13:22 | Re : IP Manager

Elixyr

Ca dans ma fenetre actuelle faite sous Visual C++ serait l'ideal:

http://www.csharpfr.com/codes/MODIFIER-CONFIGURATION-RESEAU-LOCAL_45374.aspx

samedi 8 août 2009 à 15:15:06 | Re : IP Manager

Elixyr

me renvoi sur des Newsgroup, je sais pas si j'ose les mettres ici??

samedi 8 août 2009 à 15:55:19 | Re : IP Manager

rt15

Membre Club Administrateur CodeS-SourceS

En fait Glarys est un des nombreux comptes d'un sombre personnage qui a une forte tendance a poster des liens vers des newsgroups et a rabacher "Ca existe depuis XX années" sans aider les gens le moins du monde. Son but semble être au moins de faire partir tout le monde de CodeS-SourceS.

Les admins suppriment pas mal de ses messages sur le forum, mais on peut pas deviner ce qu'il envoie par MP...

Donc si tu pouvais copier coller ici son message, ça m'aiderait à cerner l'étendu des dégâts...

samedi 8 août 2009 à 16:04:04 | Re : IP Manager

rt15

Membre Club Administrateur CodeS-SourceS

Le lien que tu as donné -> L'interface est "sympa", mais le code derrière est particulièrement moche : appel à netsh, une commande DOS... Je vais faire un premier exemple en console. Je vais voir si je fais une interface graphique par la suite.

samedi 8 août 2009 à 17:49:49 | Re : IP Manager

Elixyr

J'veux pas semer la zizanie... mais bon voici son message:

Message :
Si c'est sous Windows, ça se fait facilement avec les apis Win32.
Dans ce cas, tu peux demander sur le newsgroup professionnel des apis Win32 :
news://nntp.aioe.org/fr.comp.os.ms-windows.programmation
ou
http://tinyurl.com/cvd7wv par Google
(C et C++, Microsoft)

=================================================

Pour le netsh, j'ai vu ca, je pensais que c'était obligatoire.

En fait j'viens de tomber sur le GetmyIP, code ressemblant au miens sous VC++... j'aurais aimer combiner celui ci avec le lien au dessus et par la suite encore ajouter des fonction que j'ai dans un bouquin.. donc une interface graphique aurait été sympa... merci de ton aide.

samedi 8 août 2009 à 18:08:55 | Re : IP Manager

rt15

Membre Club Administrateur CodeS-SourceS

Merci.

Bon il nous enlève les gens, mais au moins il reste poli. Au moins.

GetMyIp, si c'est celui là, c'est du winsock. Donc tu peux lire l'IP mais pas la changer ou la renouveler.

J'ai fait quelques essais avec IPHelper. Mais bon le problème avec le renew c'est que le dhcp a tendance à refiler la même adresse... Donc je suis pas sûr à 100% que ça fonctionne !

D'autre part, mon code ne fonctionne a coup sûr que s'il n'y a une carte réseau sur le PC, et qu'une IP sur cette carte.

Application console. Pour compiler sous gcc, ajouter -nostartfiles -nodefaultlibs -nostdlib -ffreestanding dans les options du lieur.
Pour compiler sous VC, s'arranger pour que le lieur ignore toutes les librairies par défaut (/nodefaultlib).
Sous VC, en cas d'erreur LNK2001 : __chkesp symbole externe non résolu -> Enlever /GZ des options de compilation

Code C/C++ :
#ifdef UNICODE

#define _UNICODE
#endif /* UNICODE */

#include <windows.h>
#include <iphlpapi.h>
#include <tchar.h>

/**
* Alloue une zone mémoire en utilisant VirtualAlloc
*
* @param nSize Taille de la zone à allouer
* @return Pointeur sur la zone allouée
*/

void* __stdcall Mem_Alloc(const DWORD nSize)
{
return VirtualAlloc(NULL, nSize,
MEM_RESERVE | MEM_COMMIT,
PAGE_READWRITE);
}

/**
* Libère une zone mémoire allouée avec Mem_Alloc
*
* @param Pointeur sur la zone allouée
*/

void __stdcall Mem_Free(void *lpAddress)
{
VirtualFree(lpAddress, 0, MEM_RELEASE);
}

/**
* Affiche le texte indiqué dans la console
*
* @param lpText Texte à écrire dans la console
* @return FALSE en cas de problème
*/

BOOL __stdcall Con_WriteLn(const TCHAR *lpText)
{
DWORD nWritten; /* Réception du nombre de caractère écris */
char *lpOemText; /* Texte traduit en OEM */
DWORD nSize; /* Taille du texte à écrire */
BOOL bResult;

/* Traduction des caractère àùéè... */
nSize = lstrlen(lpText);

/* On aura un \n en plus */
nSize++;

lpOemText = (char*)Mem_Alloc(nSize);
CharToOem(lpText, lpOemText);
lstrcatA(lpOemText, "\n");

bResult = WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), lpOemText,
nSize, &nWritten, NULL);

Mem_Free(lpOemText);
return bResult;
}

/**
* Affiche un message d'erreur correspondant à la dernière erreur Win32
*/

DWORD __stdcall Sys_ShowLastError()
{
DWORD nLastError; /* Numéro de l'erreur */
LPTSTR lpMessageBuffer; /* Récupération du message */

nLastError = GetLastError();

/* Formatage du message */
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, nLastError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(void*)&lpMessageBuffer, 0, NULL);

/* Affichage du message */
MessageBox(NULL, lpMessageBuffer, _T("ERROR"), MB_OK | MB_ICONERROR);

LocalFree(lpMessageBuffer);
return nLastError;
}

/**
* Convertit un char en TCHAR
*/

void __stdcall Str_AnsiToTChar(TCHAR* lpBuffer, int nBufferCharCount,
char* lpStringToConvert)
{
#ifdef UNICODE
MultiByteToWideChar(CP_ACP, 0,
lpStringToConvert, -1,
(WCHAR*)lpBuffer, nBufferCharCount);
#else
lstrcpy(lpBuffer, lpStringToConvert);
#endif
}

/**
* Renvoie les infos sur les adapters
*
* Après utilisation, il faut libérer les infos retournées avec Mem_Free.
* Renvoie NULL en cas d'erreur.
*/

IP_ADAPTER_INFO* __stdcall RetrieveAdaptersInfo()
{
DWORD nOutBufLen; /* Taille de la zone à allouer pour les infos */
PIP_ADAPTER_INFO lpResult;

/* Récupération de la taille à allouer et allocation */
nOutBufLen = 0;
GetAdaptersInfo(NULL, &nOutBufLen);
lpResult = (PIP_ADAPTER_INFO)Mem_Alloc(nOutBufLen);

/* Récupération des infos */
if (GetAdaptersInfo(lpResult, &nOutBufLen) != NO_ERROR)
{
Mem_Free(lpResult);
lpResult = NULL;
}

return lpResult;
}

/**
* Renvoie les infos sur l'interface
*
* Après utilisation, il faut libérer les infos retournées avec Mem_Free.
* Renvoie NULL en cas d'erreur.
*/

IP_INTERFACE_INFO* __stdcall RetrieveInterfaceInfo()
{
DWORD nOutBufLen; /* Taille de la zone à allouer pour les infos */
PIP_INTERFACE_INFO lpResult;

/* Récupération de la taille à allouer et allocation */
nOutBufLen = 0;
GetAdaptersInfo(NULL, &nOutBufLen);
lpResult = (PIP_INTERFACE_INFO)Mem_Alloc(nOutBufLen);

/* Récupération des infos */
if (GetInterfaceInfo(lpResult, &nOutBufLen) != NO_ERROR)
{
Mem_Free(lpResult);
lpResult = NULL;
}

return lpResult;
}

/**
* Affiche la première adresse IP de l'adapter
*
* Attention, un adapter peut avoir plusieurs adresses.
*/

void __stdcall DisplayAdapterIp(IP_ADAPTER_INFO* lpAdaptersInfo)
{
TCHAR lpBuffer[64];

Str_AnsiToTChar(lpBuffer, 64, lpAdaptersInfo->IpAddressList.IpAddress.String);
/* lstrcat(lpBuffer, _T("\n")); */
Con_WriteLn(lpBuffer);
}

/**
* Main
*/

int __cdecl mainCRTStartup()
{
PIP_ADAPTER_INFO lpAdaptersInfo1; /* Infos les adapters avant changement */
PIP_ADAPTER_INFO lpAdaptersInfo2; /* Infos les adapters après changement */
PIP_INTERFACE_INFO lpInterfaceInfo; /* Infos sur l'interface */
DWORD nReturnValue; /* Vérification des appels */
int nResult;

nResult = 1;

/* Récupération des infos sur les adapters */
lpAdaptersInfo1 = RetrieveAdaptersInfo();
if (! lpAdaptersInfo1)
{
Con_WriteLn(_T("Echec de la récupération des infos sur les adapters"));
goto the_end;
}

/* Affichage de la première IP du premier adapter */
DisplayAdapterIp(lpAdaptersInfo1);

/* Récupération des infos sur l'interface */
lpInterfaceInfo = RetrieveInterfaceInfo();
if (! lpInterfaceInfo)
{
Con_WriteLn(_T("Echec de la récupération des infos sur l'interface"));
goto free_adapter_info1;
}

/* Renouvellement de l'IP */
nReturnValue = IpRenewAddress(&lpInterfaceInfo->Adapter[0]);
if (nReturnValue != NO_ERROR)
{
Con_WriteLn(_T("Erreur du renew"));
SetLastError(nReturnValue);
Sys_ShowLastError();
goto free_adapter_info2;
}

/* Récupération des infos sur les adapters */
lpAdaptersInfo2 = RetrieveAdaptersInfo();
if (! lpAdaptersInfo2)
{
Con_WriteLn(_T("Echec de la récupération des infos sur les adapters"));
goto free_interface_info;
}

/* Nouvel affichage de l'IP */
DisplayAdapterIp(lpAdaptersInfo2);

nResult = 0;

free_adapter_info2:
Mem_Free(lpAdaptersInfo2);
free_interface_info:
Mem_Free(lpInterfaceInfo);
free_adapter_info1:
Mem_Free(lpAdaptersInfo1);
the_end:
/* ExitProcess nécessaire car sinon c'est un ExitThread */
ExitProcess(nResult);

/* Pour esquiver le warning */
return 0;
}


1 2

Cette discussion est classée dans : clic, fenetre, manager, ip, adresse


Répondre à ce message

Sujets en rapport avec ce message

Récupérer une adresse IP. ( à partir de 2 cartes réseaux. ) [ par pcayrol ] Ma config : un PC avec deux cartes réseaux. Chaque carte a son adresse IP.Avec la fonction gethostbyname je recupere un pointeur HOSTENT qui pointe su adresse IP [ par IronLeader ] comment je peux lire l'adresse ip du pc sur lequel l'executable est lance en c++un peu comme winipcfg en fait Merci d'avance afficher l'adresse ip [ par laigle76 ] Salut,je voudrai savoir comment faire pour afficher l'adresse ip du pc d'ou est lancé l'appli.J'utilise Vc++ 6.0 et dev c++Merci d'avance help!!!! Saisir adresse ip en C [ par yeager ] bonjourj'ai un petit problème pour saisir les informations sur mon adresse ip.J'ai un petit code tout simple qui devrait marcher....mais comme par has Modifier mon adresse IP [ par sephiro ] Je recherche les API pour modifier l'adresse IP de mon PC, je me déplace dans de nombreux sites ayant des plages IP différentes, j'aimerai donc par pr Récupération d'adresse IP dans un programme [ par Jerems59 ] BonjourJe souhaiterai récupérer mon adresse IP lorsque je me connecte sur internet (connexion 56k) Je voudrai utilisé ensuite cette adresse IP dans un convertion d'ip [ par zebrahead ] j'aimerai savoir comment convertir, une adresse ip de la base 10 a la base 2, parceque faire la convertion d'un chiffre "normal" ca passe mais je n'ar URGENT !! verification adresse ip !!!! [ par ben01n ] Salut à tousje suis débutant en c et je suis en train de programmer un serveur sous linuxvoila mon problème : mon prog prend une adresse ip comme argu Masque de saisie sous C++ Buider 6 [ par ivdz ] Bonjour,Comment générer le masque de saisie d'une adresse IP. J'ai créé un TMaskEdit *TMEpuis j'ai fait TME->EditMask="000.000.000.000"Cela marche pou Adresse IP [ par lamotiniere ] TimBonjour, j'aimerais savoir comment choper des adresses IP par courier électronic.Voila c'est tout, merci de me repondre vite...


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 9,890 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales