На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Программно сменить IP
    Как можно программно поменять IP адрес и прочие его приблуды (Default gateway, prim DNS, sec DNS, etc.)?
    Нашел нужные настрокй в реестре, но при их смене не происходит перенастройки адаптера. Нужно перезагружатья... :wall:
    Но ведь вся прелесть XP и 2k в том, что эти настройки можно применить без перезагрузки! Так как это сделать? :ph34r:
    Per Aspera ad Astra
      Нашел один метод, но он не совсем программный. Это все можно сделать с помощью netsh (консольной утилиты).
      Но мне этот способ не нравиться. Должен же быть API!..

      Кстати, как можно задать настройку прокси для инета (по локалке)?
      Per Aspera ad Astra
        ну этот NETSH импортирует не так много функций.. я бы посмотрел в сторону MprXXX - функций...
        Не каждая серая масса имеет что-то общее с мозгом (с) Станислав Ежи Лец
          ммм... Да вообще очень много чего разные библиотеки импортируют. Гадать чтоли будете?

          Вот тебе из "iphlpapi.dll"
          ExpandedWrap disabled
            typedef DWORD (WINAPI *_SetAdapterIpAddress )( char *szAdapterGUID,
                                                           DWORD dwDHCP,
                                                           DWORD dwIP,
                                                           DWORD dwMask,
                                                           DWORD dwGateway );
          user posted image
          В русском языке есть слова, их там много.
          Когда их составляешь вместе, получается предложение, где есть сказуемое, подлежащее и прочая светотень.
          В нём переставь местоимение, сказуемое и подлежащее, и появится интонация!
            Rouse А этот способ подойдет если на сетевой карте закреплены несколько ip ?
            lc_vocation->on( abap_true )
              Цитата Rouse_ @
              Вот тебе из "iphlpapi.dll"
              Я когда только начал копать как раз в мсдн нашел эти функции. Но вот беда, в дельфи они не объявлены... А вручную подключать из библиотек - лень...
              Per Aspera ad Astra
                ищи заголовки тогда %) или тоже лень? :whistle:
                  Цитата D[u]fa @
                  ищи заголовки тогда %) или тоже лень? :whistle:

                  Просто программа этого не стоит. К тому же сейчас у меня нет времени на такие усилия по ней.
                  Если кто кинет в меня заголовочными файлами от iphlpapi.dll (*.pas), буду очень благодарен. ;)
                  Per Aspera ad Astra
                    тебе надо качнуть jwa заголовки а конкретно JwaIpHlpApi.pas, поищи в поисковике, или потом выложу если не найдешь
                      А в JediAPI есть к ней заголовки? Где-то она у меня валялась...
                      Per Aspera ad Astra
                        ExpandedWrap disabled
                          const
                           MAX_ADAPTER_NAME_LENGTH        = 256;
                           MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
                           MAX_ADAPTER_ADDRESS_LENGTH     = 8;
                           IPHelper = 'iphlpapi.dll';
                           
                           MIB_IF_TYPE_OTHER     = 1;
                           MIB_IF_TYPE_ETHERNET  = 6;
                           MIB_IF_TYPE_TOKENRING = 9;
                           MIB_IF_TYPE_FDDI      = 15;
                           MIB_IF_TYPE_PPP       = 23;
                           MIB_IF_TYPE_LOOPBACK  = 24;
                           MIB_IF_TYPE_SLIP      = 28;
                           
                          type
                           time_t = Longint;
                           
                           IP_ADDRESS_STRING = record
                             S: array [0..15] of Char;
                           end;
                           IP_MASK_STRING = IP_ADDRESS_STRING;
                           PIP_MASK_STRING = ^IP_MASK_STRING;
                           
                           PIP_ADDR_STRING = ^IP_ADDR_STRING;
                           IP_ADDR_STRING = record
                             Next: PIP_ADDR_STRING;
                             IpAddress: IP_ADDRESS_STRING;
                             IpMask: IP_MASK_STRING;
                             Context: DWORD;
                           end;
                           
                           PIP_ADAPTER_INFO = ^IP_ADAPTER_INFO;
                           IP_ADAPTER_INFO = record
                             Next: PIP_ADAPTER_INFO;
                             ComboIndex: DWORD;
                             AdapterName: array [0..MAX_ADAPTER_NAME_LENGTH + 3] of Char;
                             Description: array [0..MAX_ADAPTER_DESCRIPTION_LENGTH + 3] of Char;
                             AddressLength: UINT;
                             Address: array [0..MAX_ADAPTER_ADDRESS_LENGTH - 1] of BYTE;
                             Index: DWORD;
                             Type_: UINT;
                             DhcpEnabled: UINT;
                             CurrentIpAddress: PIP_ADDR_STRING;
                             IpAddressList: IP_ADDR_STRING;
                             GatewayList: IP_ADDR_STRING;
                             DhcpServer: IP_ADDR_STRING;
                             HaveWins: BOOL;
                             PrimaryWinsServer: IP_ADDR_STRING;
                             SecondaryWinsServer: IP_ADDR_STRING;
                             LeaseObtained: time_t;
                             LeaseExpires: time_t;
                           end;
                           
                          type
                           TForm1 = class(TForm)
                             Memo1: TMemo;
                             procedure FormCreate(Sender: TObject);
                             function GetAdapterGUID: String;
                           private
                             { Private declarations }
                           public
                             { Public declarations }
                           end;
                           
                          var
                           Form1: TForm1;
                           
                          implementation
                           
                           function SetAdapterIpAddress(szAdapterGUID: PChar; dwDHCP, dwIP, dwMask, dwGateway: DWORD): DWORD; stdcall; external 'iphlpapi.dll';
                           
                           function GetAdaptersInfo(pAdapterInfo: PIP_ADAPTER_INFO;
                             var pOutBufLen: ULONG): DWORD; stdcall; external IPHelper;
                          {$R *.dfm}
                           
                          procedure TForm1.FormCreate(Sender: TObject);
                          var
                           InterfaceInfo,
                           TmpPointer: PIP_ADAPTER_INFO;
                           Len: Cardinal;
                           strl: TStringList;
                          begin
                           try
                             strl := TStringList.Create;
                             strl.Text := GetAdapterGUID;
                             if strl.Count > 0 then
                               SetAdapterIpAddress(PChar(strl.Strings[0]),0,0,inet_addr('255.255.255.0'),inet_addr('198.162.0.147'));
                           finally
                             strl.Free;
                           end;
                          end;
                           
                          function TForm1.GetAdapterGUID: String;
                          var
                           InterfaceInfo,
                           TmpPointer: PIP_ADAPTER_INFO;
                           IP: PIP_ADDR_STRING;
                           Len: ULONG;
                           AdapterType: String;
                          begin
                           if GetAdaptersInfo(nil, Len) = ERROR_BUFFER_OVERFLOW then
                           begin
                             GetMem(InterfaceInfo, Len);
                             try
                               if GetAdaptersInfo(InterfaceInfo, Len) = ERROR_SUCCESS then
                               begin
                                 TmpPointer := InterfaceInfo;
                                 repeat
                                   if Result <> '' then
                                     Result := Result+#13#10;
                                   Result := Result+TmpPointer^.AdapterName;
                                   TmpPointer := TmpPointer.Next;
                                 until TmpPointer = nil;
                               end;
                             finally
                               FreeMem(InterfaceInfo);
                             end;
                           end;
                          end;
                        lc_vocation->on( abap_true )
                          что то поменялось с тех времен. не работает функция. получаю ошибку 87
                          Сообщение отредактировано: Emmys -
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script Execution time: 0,1250 ]   [ 18 queries used ]   [ Generated: 23.09.19, 15:36 GMT ]