Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 2 exe dateien befehligen ? (https://www.delphipraxis.net/74129-2-exe-dateien-befehligen.html)

agm65 28. Jul 2006 14:05


2 exe dateien befehligen ?
 
hi freunde...ich mal wieder ;) .
kurze frage..

also ich habe mein hauptprogramm welches als navigation dient....jetzt starte ich ein anderes programm (2te exe) und beim starten der 2ten exe minimiere ich mein mainprogramm. wie kann ich es jetzt machen, das beim beenden der 2ten exe, das main tool wieder aufgeht ? danke für die hilfe ! mfg

fwsp 28. Jul 2006 14:09

Re: 2 exe dateien befehligen ?
 
ShellExecuteAndWait
Delphi-Quellcode:
unit ShellApiEx;

interface

uses
  Windows, ShellApi;

{.$DEFINE UNICODE}
function ShellExecuteAndWaitA(hWnd: HWND;
   Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer;
  bWait: BOOL): HINST; stdcall;
function ShellExecuteAndWaitW(hWnd: HWND;
   Operation, FileName, Parameters, Directory: PWideChar; ShowCmd: Integer;
  bWait: BOOL): HINST; stdcall;

type
  TShellExecuteAndWait = function(hWnd: Windows.HWND;
{$IFDEF UNICODE}
    Operation, FileName, Parameters, Directory: PWideChar;
{$ELSE}
    Operation, FileName, Parameters, Directory: PAnsiChar;
{$ENDIF}
    ShowCmd: Integer; bWait: BOOL): HINST; stdcall;
var
  ShellExecuteAndWait: TShellExecuteAndWait =
{$IFDEF UNICODE}
  ShellExecuteAndWaitW;
{$ELSE}
  ShellExecuteAndWaitA;
{$ENDIF}
implementation

function ShellExecuteAndWaitW(hWnd: HWND;
   Operation, FileName, Parameters, Directory: PWideChar; ShowCmd: Integer;
  bWait: BOOL): HINST; stdcall;
var
  sei: TShellExecuteInfoW;
begin
  ZeroMemory(@sei, sizeof(sei));
  with sei do
  begin
    cbSize := sizeof(sei);
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := hWnd;
    lpVerb := Operation;
    lpFile := FileName;
    lpParameters := Parameters;
    lpDirectory := Directory;
    nShow := ShowCmd;
  end;
  if ShellExecuteExW(@sei) then
  try
    if bWait then
      WaitForSingleObject(sei.hProcess, INFINITE);
  finally
    CloseHandle(sei.hProcess);
  end;
  result := sei.hInstApp;
end;

function ShellExecuteAndWaitA(hWnd: HWND;
   Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer;
  bWait: BOOL): HINST; stdcall;
var
  sei: TShellExecuteInfoA;
begin
  ZeroMemory(@sei, sizeof(sei));
  with sei do
  begin
    cbSize := sizeof(sei);
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := hWnd;
    lpVerb := Operation;
    lpFile := FileName;
    lpParameters := Parameters;
    lpDirectory := Directory;
    nShow := ShowCmd;
  end;
  if ShellExecuteExA(@sei) then
  try
    if bWait then
      WaitForSingleObject(sei.hProcess, INFINITE);
  finally
    CloseHandle(sei.hProcess);
  end;
  result := sei.hInstApp;
end;

end.
Der Schnipsel ist glaub ich aus der CodeLib

agm65 28. Jul 2006 14:14

Re: 2 exe dateien befehligen ?
 
wie benutze ich das jetzt ? einfach in die shellapi mit rein oder ins progg ?

fwsp 28. Jul 2006 14:18

Re: 2 exe dateien befehligen ?
 
wie rufst du denn bis her dein zweites prog auf?

Delphi-Quellcode:
ShellExecuteAndWait(Application.Handle, 'open',
         ProgrammName), nil, nil, sw_shownormal,
        True);

agm65 28. Jul 2006 14:19

Re: 2 exe dateien befehligen ?
 
ja genau !

fwsp 28. Jul 2006 14:24

Re: 2 exe dateien befehligen ?
 
Dann gibt es doch kein Problem, oder? Einfach die Methode hinzufügen.

agm65 28. Jul 2006 14:27

Re: 2 exe dateien befehligen ?
 
okay hab ne 1a methode die absolut perfekt läuft und einfach gut ist !

Delphi-Quellcode:
uses: JclMiscel (Jedi)

WinExec32AndWait(Pchar(filepath),1);

sau geil ! trotzdem danke !


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.

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