Я хочу выполнить элемент из панели управления (например, «Разрешение экранов»). MS говорит, что с WinExec это должно быть легко.Как выполнить элементы в панели управления?
Эти попытки будут работать (открывающие CPanel), но сразу же после этого IDE произойдет сбой (сбой в BorDbk150N.dll):
procedure ProjectTest1;
VAR s: AnsiString;
begin
s:= 'c:\windows\system32\control.exe Desk.cpl,Settings';
WinExec(pansichar(s), SW_NORMAL);
end;
procedure ProjectTest2;
VAR
App : String;
Params : String;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
try
App := 'c:\windows\system32\control.exe';
Params := 'desk.cpl,Settings';
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
StartupInfo.cb := SizeOf(StartupInfo);
if NOT CreateProcess(NIL, PChar(App+' '+Params), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo) then RaiseLastOSError;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end;
Если у вас есть лучший способ, пожалуйста, дайте мне знать.
Использование Delphi XE, Win 7
Ваша первая попытка не удалась на 'ERROR_FILE_NOT_FOUND'. – TLama
Все работает отлично. Я отмечаю, что ваши две версии делают разные вещи. –
@DavidHeffernan - Да, второй лучше, потому что WinExec отмечен как устаревший. – Ampere