# Native Code > برنامه نویسی در Delphi > توسعه نرم افزارهای تحت شبکه >  ست کردن ip براي کارت شبکه

## h_mohamadi

سلام بر استاتيد و دوستان گرامي 
من مي خواهم با دلفي بر روي کارت شبکه ip آدرس و ساب مسک و گيتوي و دي ان اس ها را با دستور ست کنم
من فقط هرچي در اينترنت گشتم دستورات براي آي پي آدرس و ساب مسک بود.از دوستان خواهش مي کنم کمک کنيد


{$APPTYPE CONSOLE}  {$R *.res}  uses   SysUtils,   ActiveX,   Variants,   ComObj;  procedure  SetStaticIpAddress(const NetworkCard, IPAddress, Mask :string); const   WbemUser    ='';   WbemPassword='';   WbemComputer='localhost';   wbemFlagForwardOnly = $00000020; var   FSWbemLocator   : OLEVariant;   FWMIService     : OLEVariant;   FWbemObjectSet  : OLEVariant;   FWbemObject     : OLEVariant;   FOutParams      : OLEVariant;   vIpAddress      : OLEVariant;   vMask           : OLEVariant;   oEnum           : IEnumvariant;   iValue          : LongWord; begin   FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');   FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);    FWbemObjectSet:= FWMIService.ExecQuery(Format('SELECT * FROM Win32_NetworkAdapterConfiguration Where Description="%s"',[NetworkCard]),'WQL',wbemFlagForwardOnly);   oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;   if oEnum.Next(1, FWbemObject, iValue) = 0 then   begin     vIpAddress   := VarArrayCreate([0, 0], varVariant);     vIpAddress[0]:= IPAddress;     vMask   := VarArrayCreate([0, 0], varVariant);     vMask[0]:=  Mask;     FOutParams:=FWbemObject.EnableStatic(vIpAddress, vMask);     // 0 - Successful completion, no reboot required     // 1 - Successful completion, reboot required     Writeln(Format('ReturnValue  %s',[FOutParams]));   end   else   Writeln('Network card not found'); end;   begin  try     CoInitialize(nil);     try       SetStaticIpAddress('Network card name','192.168.1.1','255.255.255.0');     finally       CoUninitialize;     end;  except     on E:EOleException do         Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));     on E:Exception do         Writeln(E.Classname, ':', E.Message);  end;  Writeln('Press Enter to exit');  Readln; end.

----------


## samani

شما ميتونيد از دستور Netsh.exe interface ip  استفاده كنيد
براي ديدن پارامترهاي مورد استفاده در  Command Prompt اين دستور رو تايپ كن

Netsh.exe interface ip /?


براي اطلاعات بيشتر به سايت مايكروسافت رو ببين

اين هم يه مثال

function ChangeIp(ConnectionName, Ip, Netmask, Gateway: string): boolean;

  function ExecAndWait(FileName: String; Visibility: integer): integer;
  var
    zAppName: array [0 .. 512] of char;
    zCurDir: array [0 .. 255] of char;
    WorkDir: String;
    StartupInfo: TStartupInfo;
    ProcessInfo: TProcessInformation;
    Resultado: DWord;
  begin
    StrPCopy(zAppName, FileName);
    GetDir(0, WorkDir);
    StrPCopy(zCurDir, WorkDir);
    FillChar(StartupInfo, Sizeof(StartupInfo), #0);
    StartupInfo.cb := Sizeof(StartupInfo);

    StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
    StartupInfo.wShowWindow := Visibility;
    if not CreateProcess(nil, zAppName, nil, nil, false, CREATE_NEW_CONSOLE or
      NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
      Result := -1

    else
    begin
      WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
      GetExitCodeProcess(ProcessInfo.hProcess, Resultado);
      Result := Resultado;
    end;
  end;

begin
  Result := (ExecAndWait('netsh interface ip set address "' + ConnectionName +
    '" ' + ' static ' + Ip + ' ' + Netmask + ' ' + Gateway + ' 1', sw_hide) = 0);
end;


procedure TForm1.Button1Click(Sender: TObject);
var ip: string;
begin
  ip := '192.168.0.132';
  if ChangeIp('Local Area Connection', ip, '255.255.255.0',
    '192.168.0.1') then
    showmessage('IP Changed to ' + ip)
  else
    showmessage('Error changing IP');
end;

----------


## h_mohamadi

> شما ميتونيد از دستور Netsh.exe interface ip  استفاده كنيد
> براي ديدن پارامترهاي مورد استفاده در run اين دستور رو تايپ كن
> 
> Netsh.exe interface ip /?
> 
> 
> براي اطلاعات بيشتر به سايت مايكروسافت رو ببين
> 
> اين هم يه مثال
> ...



dns ها را چطور ست کنم

----------


## samani

اگه help  رو نگاه ميكردي متوجه ميشدي
Netsh.exe interface ip /?

اينم براي تسريع شدن كارت

netsh.exe interface ip set dnsservers "Local Area Connection" static 4.2.2.4 primary

----------


## h_mohamadi

> اگه help  رو نگاه ميكردي متوجه ميشدي
> Netsh.exe interface ip /?
> 
> اينم براي تسريع شدن كارت
> 
> netsh.exe interface ip set dnsservers "Local Area Connection" static 4.2.2.4 primary


ممنونم ولي من مي خواهم 2 تا DNS را ست کنم ولي نشد.چطور بايد کد دلفي را اصلاح کنم

  Result:=(ExecAndWait('netsh interface ip set address "' + ConnectionName +'" ' + ' static ' +Ip+ ' ' +Submask + ' ' + Gateway + '1'+'4.2.2.4 primary' , sw_hide) = 0);

----------


## samani

دوست عزيز
اگه شما Netsh.exe interface ip /? رو توي  Command Prompt ويندوز اجرا كنيد بايد متوجه بشيد
همه دستورات ليست ميشه مثل add , delete , set , ...
وبراي تنظيم يا اضافه كردن dns تو كد دلفي دوباره از دستور exenandwait بايد استفاده كني

----------


## h_mohamadi

ممنونم ولي اگر بخواهم 2 تا ip ست کنم بايد چيکار کنم طبق عکس زير

----------


## h_mohamadi

دوستان کمک کنيد؟

----------


## h_mohamadi

من دستوراتم در ويندوز 7 کار مي کنه اما در ويندوز xp سيستم dns ها را ست نمي کند.
مشکل بعدي هم اين است در زمان حذف Gateway را حذف نمي کند
نمي دانم مشکل از کجاست.
من پروژه ام را گذاشته ام خواهش مي کنم دوستان راهنمايي بفرمايند.

----------


## h_mohamadi

> اگر به جای این التماس و درخواستها ، یکمی به خودتون زحمت جستجو و تحقیق رو میدادید ، جواب کامل شما در پست شماره 6 گفته شده.



من تمام راهنما را خواندم ولي نشد؟؟؟؟؟!!!!

----------


## h_mohamadi

سلام بر دوستان 
من از netsh.exe استفاده کردم ولي مشکلم اين است که برنامه ام در ويندوز سرور 2008 کار نمي کند اما خواستم ببينم فانگشني است که اين کار را بکند
از کامپوننت IP*Works هم خواستم استفاده کنم ولي نشد
يک فانگشن هم گرفتم ولي کار نمي کند 
که سمپل را در زير مي گذارم
خواهش مي کنم راهنمايي بفرمائيد
من مي خواهم قسمت هايي  که قرمز است را ست کنم

----------


## h_mohamadi

دوستان مي شود يک راهنمايي بفرمائيد و من مشکل دارم

----------


## h_mohamadi

چرا هيچ يک از دوستان يک راهنمايي نمي کنند به من؟؟؟؟
من واقعا به اين مورد نياز دارم

----------


## Valadi

من هم قبلا دنبال چنين چيزي بودم كه يك كامپونت پيدا كردم اسمش يادم نيست 
اين كامپونت امكانات جالبي داشت در زمينه IP

----------


## h_mohamadi

> من هم قبلا دنبال چنين چيزي بودم كه يك كامپونت پيدا كردم اسمش يادم نيست 
> اين كامپونت امكانات جالبي داشت در زمينه IP


 لطفا اگر اسمش را پيدا کرديد به من بگويئد من واقعا به آن نياز دارم

----------


## h_mohamadi

کسي از دوستان کامپونتت جديد و يا اسم کامپوننتي که دوستمان فرموده اند را نمي داند
من واقعا به اين مورد احتياج دارم؟؟؟؟!!!!

----------


## h_mohamadi

کسي از دوستان به من کمک نمي کند

----------


## h_mohamadi

دوستان خيلي ممنونم آخر خودم پيدا کردم

----------

