0

コントロール パネルから項目を実行したい (たとえば、「画面の解像度」)。 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 を使用

4

1 に答える 1