Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2013, 08:43   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Восклицание Получение названия сетевого интерфеса

Доброго времени суток!
Пакетными файлами пытаюсь выудить имя сетевого интерфейса.

Проблема в том, что без отладки файл %APPDATA%\ipconfig+u.txt есть и программа видит его, но загружает его пустым, при отладке тоже самое.

Сам же батник(тот который программа пишет и запускает), работает идеально, даже если его запускать от руки.


Собственно код:
Код:
function RunAndWait(const ExeName, ParamString: string; s_mode: Integer;
  QuoteParams: Boolean = true): Integer;
var
  ShellInfo: TShellExecuteInfo;
  ExitCode: DWORD;
begin
  ShellInfo.cbSize := SizeOf(ShellInfo);
  ShellInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
  ShellInfo.Wnd := HWND_DESKTOP;
  ShellInfo.lpVerb := 'open';
  ShellInfo.lpFile := PChar(ExeName);
  if QuoteParams then
    ShellInfo.lpParameters := PChar('"' + ParamString + '"')
  else
    ShellInfo.lpParameters := PChar(ParamString);
  ShellInfo.lpDirectory := PChar(ExtractFilePath(ExeName));
  ShellInfo.nShow := s_mode;
  // ShellInfo.nShow := SW_HIDE;
  if not ShellExecuteEx(@ShellInfo) then
    RaiseLastOSError;
  if ShellInfo.hProcess <> 0 then
    try
      WaitForSingleObjectEx(ShellInfo.hProcess, INFINITE, false);
      GetExitCodeProcess(ShellInfo.hProcess, ExitCode);
      Result := ExitCode;
    finally
      CloseHandle(ShellInfo.hProcess);
    end
  else
    Result := -1;
end;


function GetOVPNInterfaceName: string;
var
  ts: TStringList;
  AppData: string;
  sFile: string;
  sTmpFile: string;
  sTmpFileU: string;
begin
  AppData := IncludeTrailingPathDelimiter(GetEnvironmentVariable('APPDATA'));
  ts := TStringList.Create;
  try
    sFile := AppData + '$23423423423.bat';
    sTmpFile := 'IPInterf.txt';
    sTmpFileU := 'IPInterf_u.txt';
    // Create ipconfig /all
    ts.Add('@Echo off');
    ts.Add('ipconfig /all > ' + sTmpFile);
    ts.Add('cmd /u /c Type ' + sTmpFile + ' >> ' + sTmpFileU);
    ts.Add('del ' + sTmpFile);
    ts.Add('del %0');
    ts.SaveToFile(sFile);
    RunAndWait(sFile, '', SW_HIDE, false);
    // ShellExecute(0, 'Open', PChar(sFile), nil, PChar(AppData), SW_HIDE);
    // Sleep(10000);
    if FileExists(AppData + sTmpFileU) then
    begin
      {
        Файл существует и не пустой!
      }
      ts.Clear;
      ts.LoadFromFile(AppData + sTmpFileU);
     //Файл пуст
      DeleteFile(AppData + sTmpFileU);
      sFile := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) +
        'gggg.txt';
      ts.SaveToFile(sFile);
    end;

  finally
    FreeAndNil(ts);
  end;
end;
Почему программа не может загрузить содержимое ipconfig_u.txt?


Проблема решена
Код:
ts.LoadFromFile(AppData + sTmpFileU, TEncoding.UTF8);

Последний раз редактировалось Человек_Борща; 04.06.2013 в 09:04.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка сетевого адаптера rakro C# (си шарп) 1 13.12.2012 12:49
Анализ сетевого соединения Anderver Помощь студентам 2 02.10.2012 11:50
Программа сетевого мониторинга free6878 Помощь студентам 3 14.10.2010 20:34
Написание сетевого чата. CuCagMuH Работа с сетью в Delphi 2 05.04.2010 05:55
Построение сетевого графика Nina+ Общие вопросы C/C++ 0 04.06.2009 19:39