Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Anwendung starten oder wenn gestartet in den Vordergrund... (https://www.delphipraxis.net/24675-anwendung-starten-oder-wenn-gestartet-den-vordergrund.html)

mschaefer 24. Jun 2004 11:49


Anwendung starten oder wenn gestartet in den Vordergrund...
 
Moin, moin,

wie die Überschrift schon sagt will ich eine Anwendung aus meinem Programm starten.
Das mache ich mit ShellExecute.

Delphi-Quellcode:
      application.ProcessMessages;
         ShellExecute
         ( 0,'open', PChar(ExtractFilePath(application.ExeName)+ 'Programm.exe' )
            ,PChar(   '-run' ),'', SW_SHOWNORMAL
         );
wie man daran übrigens sieht steht das Programm, dass ich starten will, im selben Verzeichnis wie mein Steuerprogramm. Jetzt soll aber, wenn das Programm schon läuft einfach die alte Instantz in den Fordergrund gebracht werden. Gibt´s da Ideen.


Grüsse // Martin

Dax 24. Jun 2004 11:52

Re: Anwendung starten oder wenn gestartet in den Vordergrund
 
Such mal bei p.i.c.s. Page nach, da gibt's Ansätze.

Luckie 24. Jun 2004 12:04

Re: Anwendung starten oder wenn gestartet in den Vordergrund
 
Such dir mit MSDN-Library durchsuchenFimdWindow das Fenster und wenn du es findest hol es mit MSDN-Library durchsuchensetforegroundwindow in den Fordergrund, ansonsten starte es.

mschaefer 24. Jun 2004 13:08

Re: Anwendung starten oder wenn gestartet in den Vordergrund
 
Moin, Lucky

Du hast die Trefferquote zielsicher erhöht, damit gibt es nun meine Lösung:


Delphi-Quellcode:

procedure Start ( ApplicationName : string);

var Wnd : HWND;

begin
  HWND := FindWindow
                         ( nil, PChar
                            ( copy
                               ( ApplicationName,1,abs
                                   ( length
                                     ( ApplicationName
                                     )-4 
                                   )
                               )
                            )
                         );
   If  WND <> 0 
   then SetForegroundWindow( Wnd )
   else
   begin    
     application.ProcessMessages;
     ShellExecute
      ( 0,'open', PChar
         (ExtractFilePath
            (application.ExeName
            ) + ApplicationName  
         ) ,PChar
         (   '-run'
         ),'', SW_SHOWNORMAL
     );
   end;
end;
ja DAX die P.I.C ´s Page hatte auch einiges, THX.

Tja damit steht erstmal Anleitung schreiben auf der ToDo-Liste
und ich habe erst mal Delphi-Pause . . .


Grüsse // Martin

Luckie 24. Jun 2004 17:54

Re: Anwendung starten oder wenn gestartet in den Vordergrund
 
Zitat:

Zitat von mschaefer
Delphi-Quellcode:

procedure Start ( ApplicationName : string);

var Wnd : HWND;

begin
  HWND := FindWindow
                         ( nil, PChar
                            ( copy
                               ( ApplicationName,1,abs
                                   ( length
                                     ( ApplicationName
                                     )-4 
                                   )
                               )
                            )
                         );
   If  WND <> 0 
   then SetForegroundWindow( Wnd )
   else
   begin    
     application.ProcessMessages;
     ShellExecute
      ( 0,'open', PChar
         (ExtractFilePath
            (application.ExeName
            ) + ApplicationName  
         ) ,PChar
         (   '-run'
         ),'', SW_SHOWNORMAL
     );
   end;
end;

Da das jetzt geklärt ist. Du kannst den Quellcode den du da gepostet hast lesen? :shock: Oder war das absicht, damit niemand so schnell deine Sourcen klaut?

Delphi-Quellcode:
procedure Start(ApplicationName: string);
var
  Wnd: HWND;
begin
  HWND := FindWindow(nil, PChar(copy(ApplicationName, 1,
    abs(length(ApplicationName) - 4))));
  if WND <> 0 then
    SetForegroundWindow(Wnd)
  else
  begin
    Application.ProcessMessages;
    ShellExecute(0, 'open', PChar(ExtractFilePath(Application.ExeName) +
      ApplicationName), PChar('-run'), '', SW_SHOWNORMAL);
  end;
end;
Also so finde ich es irgendwie "leserlicher". :roll:

mschaefer 24. Jun 2004 18:51

Re: Anwendung starten oder wenn gestartet in den Vordergrund
 
Hi Lucky

Ok, was die Formatierung angeht - ist Dein Spezialgebiet, lass man gut sein. Wenn Du mal ein Buch
herausgeben willst, sag bescheid, dann steuer ich ein Kapitel über Systemanalyse (DeMarco/Yourden)
bei. Also wie Du siehst habe ich den AutoFormater immernoch nicht zum Laufen gebracht. War einfach
keine Zeit...

Grüße aus dem sonnigen Hannover

// Martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 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