Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Restart des Netzweradapters (https://www.delphipraxis.net/118914-restart-des-netzweradapters.html)

sk.Silvia 17. Aug 2008 21:53


Restart des Netzweradapters
 
hallo

i such enach einen weg, den netzwerkadapeter(netzwerk) zu restarten (ekval der deaktivirung und aktivirung der netzwerkonektion)

shellexecute
ipconfig /release
ipconfig /renew

ist nich wonach ich suche, denn ich endere die MAC des adapters in den register, nur brauche ich einen weg, wie sie apliziert wird

DP-Maintenance 17. Aug 2008 23:52

DP-Maintenance
 
Dieses Thema wurde von "Luckie" von "Object-Pascal / Delphi-Language" nach "Internet / LAN / ASP.NET" verschoben.
Gehört wohl eher in die Internetsparte. ;)

marabu 18. Aug 2008 06:43

Re: Restart des Netzweradapters
 
Guten Morgen Silvia,

das Tool MACSHIFT von Nathan True macht genau das, was du willst. Es ist mit C++ implementiert, aber das sollte dich nicht daran hindern es nach Delphi zu übertragen.

Freundliche Grüße

sk.Silvia 18. Aug 2008 13:12

Re: Restart des Netzweradapters
 
buhaaaa wie soll ich dass in Delphi umsetzen?:(

Delphi-Quellcode:
void ResetAdapter(char * AdapterName) {
  struct _GUID guid = {0xBA126AD1,0x2166,0x11D1,0};
  memcpy(guid.Data4, "\xB1\xD0\x00\x80\x5F\xC1\x27\x0E", 8);
  unsigned short * buf = new unsigned short[strlen(AdapterName)+1];
 
  void (__stdcall *NcFreeNetConProperties) (NETCON_PROPERTIES *);
  HMODULE NetShell_Dll = LoadLibrary("Netshell.dll");
  if (!NetShell_Dll) {
    printf("Couldn't load Netshell.dll\n");
    return;
    }
  NcFreeNetConProperties = (void (__stdcall *)(struct tagNETCON_PROPERTIES *))GetProcAddress(NetShell_Dll, "NcFreeNetconProperties");
  if (!NcFreeNetConProperties) {
    printf("Couldn't load required DLL function\n");
    return;
    }

  for (unsigned int i = 0; i <= strlen(AdapterName); i++) {
    buf[i] = AdapterName[i];
    }
  CoInitialize(0);
    INetConnectionManager * pNCM = NULL;  
    HRESULT hr = ::CoCreateInstance(guid,
                                     NULL,
                                     CLSCTX_ALL,
                                     __uuidof(INetConnectionManager),
                                     (void**)&pNCM);
    if (!pNCM)
        printf("Failed to instantiate required object\n");
    else {
        IEnumNetConnection * pENC;
        pNCM->EnumConnections(NCME_DEFAULT, &pENC);
        if (!pENC) {
          printf("Could not enumerate Network Connections\n");
          }
        else {
          INetConnection * pNC;
          ULONG fetched;
          NETCON_PROPERTIES * pNCP;
          do {
            pENC->Next(1, &pNC, &fetched);
            if (fetched && pNC) {
              pNC->GetProperties(&pNCP);
              if (pNCP) {
                if (wcscmp(pNCP->pszwName, buf) == 0) {
                  pNC->Disconnect();
                  pNC->Connect();
                  }
                NcFreeNetConProperties(pNCP);
                }
              }
            } while (fetched);
            pENC->Release();
          }
        pNCM->Release();
    }

    FreeLibrary(NetShell_Dll);
    CoUninitialize ();
  }
wie kann man dass in eine unit stecken?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz