Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ShellExecute als Modal (https://www.delphipraxis.net/54651-shellexecute-als-modal.html)

kingflo 8. Okt 2005 20:18


ShellExecute als Modal
 
Hallo...
Weiß zufällig jemand, ob ich die Anwendung die ich mit shellexecute öffne modal setzen kann? bzw wie ich es machen kann, das meine Anwendung erst weiter arbeitet, wenn das mit shellexecute geöffnete Programm beendet wird?

marabu 8. Okt 2005 20:22

Re: ShellExecute als Modal
 
Hallo Florian,

suche mal hier nach ShellExecuteAndWaitA

Grüße vom marabu

jim_raynor 8. Okt 2005 23:39

Re: ShellExecute als Modal
 
Hier aus der JCL (JclShell.pas) falls du nicht die JCL installiert hast:

Delphi-Quellcode:
function ShellExecAndWait(const FileName: string; const Parameters: string;
  const Verb: string; CmdShow: Integer): Boolean;
var
  Sei: TShellExecuteInfo;
  Res: LongBool;
  Msg: tagMSG;
begin
  FillChar(Sei, SizeOf(Sei), #0);
  Sei.cbSize := SizeOf(Sei);
  Sei.fMask := SEE_MASK_DOENVSUBST or SEE_MASK_FLAG_NO_UI or SEE_MASK_NOCLOSEPROCESS or
    SEE_MASK_FLAG_DDEWAIT;
  Sei.lpFile := PChar(FileName);
  Sei.lpParameters := PCharOrNil(Parameters);
  Sei.lpVerb := PCharOrNil(Verb);
  Sei.nShow := CmdShow;
  Result := ShellExecuteEx(@Sei);
  if Result then
  begin
    WaitForInputIdle(Sei.hProcess, INFINITE);
    while WaitForSingleObject(Sei.hProcess, 10) = WAIT_TIMEOUT do
      repeat
        Res := PeekMessage(Msg, Sei.Wnd, 0, 0, PM_REMOVE);
        if Res then
        begin
          TranslateMessage(Msg);
          DispatchMessage(Msg);
        end;
      until not Res;
    CloseHandle(Sei.hProcess);
  end;
end;
Allerdings solltest du dann alle Buttons und so vorher deaktivieren, da diese immer noch gedrückt werden können und die Anwendung eventuell ein zweites mal gestartet wird.

Sharky 9. Okt 2005 07:45

Re: ShellExecute als Modal
 
Hai,

ansonten gibt es auch, wie in vielen Fällen, einen Beitrag in der Code-Library.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz