Показать сообщение отдельно
  #1  
Старый 18.02.2017, 09:13
Аватар для ffpereverzev
ffpereverzev ffpereverzev вне форума
Новичок
 
Регистрация: 14.02.2017
Сообщения: 50
Версия Delphi: Delphi 7
Репутация: 10
Вопрос Запуск системной утилиты из приложения

Доброго времени суток, уважаемы форумчане!
Что-то не могу найти на форумах похожих тем (наверное плохо ищу), поэтому буду рад любой помощи.
Суть вот в чем. При запуске из командной строки (с правами администратора) какой-нибудь системной утилиты (например sfc /scannow или powercfg /energy) все работает отлично и замечательно. Но стоит запустить эти же утилиты из приложения - начинаются проблемы. Пробовал решить их и так, и сяк - ничего не получается. Под "и так, и сяк" я понимаю ShellExecute(), WinExec(); CreateProcess(). Всегда одно и то же.
Привожу пример выполнения команды powercfg /energy:

С помощью CreateProcess:

Код:
if (Radiobutton1.Checked = True) then 
  FillChar(si,SizeOf(si),0);
  si.cb := SizeOf(si);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := SW_SHOWNORMAL;
    if CreateProcess(nil, 'cmd.exe /K "powercfg /energy"', nil, nil, false, 0, nil, nil, si, pi) then begin
      CloseHandle(pi.hProcess);
    end else begin
      MessageBox(0, PChar(IntToStr(GetLastError())), nil, 0);
end;

С помощью ShellExecute:

Код:
if (Radiobutton1.Checked = True) then 
    begin
      Nrg_btn:='/K powercfg /energy'; 
      ShellExecute(Handle, nil, 'cmd.exe', PChar(Nrg_btn), nil, SW_SHOW);
    end;

P.S. Ошибка при выполнении:
Цитата:
Не удалось загрузить библиотеку диагностики эффективности энергопотребления (energy.dll)
Ответить с цитированием