如何使用Delphi修改无线网卡的IP、子网掩码、默认网关、首选/备用DNS信息?台式机的网卡修改,网上已经搜索到怎么修改了,但对笔记本无线网卡不起作用,怎么办?

解决方案 »

  1.   

    如果LZ会用NETSH命令还是比较好解决的, 用API可能比较复杂
      

  2.   

    如果使用NETSH命令,那管道怎么搞。就是获得CMD的结果
    如果是API呢?
      

  3.   

    获得CMD的结果,记得以前已经回答了n次这个问题了,搜索一下吧,用API不太好搞,关键就是资料不好找,哈哈!(我也没找到成功的,呵呵)
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Mask;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        MaskEdit1: TMaskEdit;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
        FIPAddress:   Longint;
        HIPAddress:   HWND;
        PrevWndProc:   TWndMethod;
        procedure  NewWindowProc(var   Message:   TMessage);
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      const IP_ADDRESS_ID:   Longword   =   $0100;implementation
    uses CommCtrl;{$R *.dfm}
    { TForm1 }procedure TForm1.NewWindowProc(var Message: TMessage);
    var
      nField:   longint;
    begin
      case   Message.Msg   of
        WM_NOTIFY:
          begin
            if   PNMHDR(Ptr(Message.lParam)).idFrom   =   IP_ADDRESS_ID   then
            begin
              case   PNMIPAddress(ptr(Message.lParam)).hdr.code   of
                IPN_FIELDCHANGED:
                  begin
                      if   SendMessage(HIPAddress,   IPM_ISBLANK,   0,   0)   =   0   then
                          SendMessage(HIPAddress,   IPM_GETADDRESS,   0,   lParam(LPDWORD(@FIPAddress)));
                  end;
              end;
            end;
          end;
        WM_COMMAND:
          begin
            if   Message.WParamLo   =   IP_ADDRESS_ID   then
              case   Message.WParamHi   of
                EN_SETFOCUS:
                  begin
                      nField   :=   SendMessage(HIPAddress,   IPM_GETADDRESS,   0,
                          lParam(LPDWORD(@FIPAddress)));
                      if   nField   =   4   then   nField   :=   0;
                      SendMessage(HIPAddress,   IPM_SETFOCUS,   wParam(nField),   0);
                  end;
                EN_KILLFOCUS:
                  begin
                      if   SendMessage(HIPAddress,   IPM_ISBLANK,   0,   0)   =   0   then
                          SendMessage(HIPAddress,   IPM_GETADDRESS,   0,   lParam(LPDWORD(@FIPAddress)));
                  end;
                EN_CHANGE:
                  begin
                  end;
              end;
          end;
      end;
      if   Assigned(PrevWndProc)   then   PrevWndproc(Message);
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      lpInitCtrls:   TInitCommonControlsEx;
    begin
      lpInitCtrls.dwSize   :=   SizeOf(TInitCommonControlsEx);
      lpInitCtrls.dwICC     :=   ICC_INTERNET_CLASSES;
      if   InitCommonControlsEx(lpInitCtrls)   then
      begin
        PrevWndProc :=   WindowProc;
        WindowProc :=   NewWindowProc;    HIPAddress := CreateWindowEx(WS_EX_LEFT,   WC_IPADDRESS,   nil,
            WS_CHILD   +   WS_VISIBLE   +   WS_BORDER   +   WS_TABSTOP,
            MaskEdit1.Left,   MaskEdit1.Top,   MaskEdit1.Width,   MaskEdit1.Height,
            Handle,   IP_ADDRESS_ID,   HInstance,   nil);
        SendMessage(HIPAddress,IPM_SETFOCUS,0,0);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      FIPAddress   :=   MAKEIPADDRESS(127,0,0,1);
          SendMessage(HIPAddress,IPM_SETADDRESS,0,lParam(DWORD(FIPAddress)));
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      SendMessage(HIPAddress,IPM_CLEARADDRESS,0,0);end;end.