Einzelnen Beitrag anzeigen

musicman56
(Gast)

n/a Beiträge
 
#11

AW: Problem mit ShellExecute und Windows 8

  Alt 18. Jan 2013, 19:30
Hallo,

das "Warten" funktioniert bei mir mit der folgenden Funktion mit allen Betriebssystemen einwandfrei:

Delphi-Quellcode:
function RuWin_ShellExec(aHandle: HWND; FileName, Parameters, Directory: string;
                         ShowCmd: Integer; AsAdmin, Wait: boolean): Boolean;
var
  SEI: TShellExecuteInfo;
begin
  FillChar(SEI, SizeOf(SEI), #0);
  SEI.cbSize := SizeOf(SEI);
  SEI.Wnd := aHandle;
  SEI.fMask := SEE_MASK_NOCLOSEPROCESS;
  {-Bis zu XP "AsAdmin" automatisch ignorieren-}
  if RunningWinVer <= WinXPProf then AsAdmin := false;
  if AsAdmin
  then SEI.lpVerb := 'runas'
  else SEI.lpVerb := 'open';
  SEI.lpFile := PChar(FileName);
  SEI.lpParameters := PChar(Parameters);
  SEI.lpDirectory := PChar(Directory);
  SEI.nShow := ShowCmd;
  Result := ShellExecuteEx(@SEI);
  if Result then
  if Wait then begin
    if SEI.hProcess > 32 then begin
      WaitForInputIdle(SEI.hProcess, INFINITE);
      WaitForSingleObject(SEI.hProcess, INFINITE);
    end;
  end;
  CloseHandle(SEI.hProcess);
end;
Das einzige Problem, was mit dem "Warten" eigentlich nichts zu tun hat, ist dieser blöde User-Dialog unter XP wenn man "runas" verwendet, der dummerweise noch eine Checkbox beinhaltet die voreingestellt mit verminderten Rechten ausführt. Darum die OS-Prüfung
Code:
if RunningWinVer <= WinXPProf
  Mit Zitat antworten Zitat