Доброго времени суток, уважаемы форумчане!
Что-то не могу найти на форумах похожих тем (наверное плохо ищу), поэтому буду рад любой помощи.
Суть вот в чем. При запуске из командной строки (с правами администратора) какой-нибудь системной утилиты (например 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)
|