Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Starten und Stoppen einer Applikation (https://www.delphipraxis.net/7658-starten-und-stoppen-einer-applikation.html)

Tyrael Y. 18. Aug 2003 14:58


Starten und Stoppen einer Applikation
 
Hallo erst einmal,

innerhalb meines Programs möchte ich gerne bestimmte Applikationen, die auf dem Rechner laufen starten bzw. stoppen.

Starten kann ich sie wahrscheinlich mit ShellExec, aber wie stoppe ich eine Applikation ?

Weiss einer Rat ?

Grüße Tyrael

sakura 18. Aug 2003 15:07

Re: Starten und Stoppen einer Applikation
 
In der CodeLibrary findest Du wahrscheinlich einige Möglichkeiten herauszubekommen, wie das Handle der Anwendung ist. Wenn Du das weisst, kannst Du mit SendMessage die Nachricht WM_QUIT an die Anwendung senden. Das sollte diese zum Beenden bewegen ;-)

...:cat:...

Tyrael Y. 18. Aug 2003 15:08

Re: Starten und Stoppen einer Applikation
 
...ok danke dir, werde es mal ausprobieren :spin:

Luckie 18. Aug 2003 16:43

Re: Starten und Stoppen einer Applikation
 
Oder starte sie mit ShellexecuteEx, dann hast du die ProcessID mit der du dann den Prozess auch wieder beenden kannst.

Tyrael Y. 19. Aug 2003 12:00

Re: Starten und Stoppen einer Applikation
 
..ähm... :roll: ...also noch mal ausführlich..

Ich schicke einen Buffer mit einigen Informationen zu meinem Client Program. Diese Program läuft auch auf einem Client Rechner, was aber hierfür unerheblich ist, sie kann auch lokal laufen.

Auf dem Client Rechner laufen bestimmte Programme oder eben ahlt auch nicht. Laufende Programme müssen jetzt gestoppt werden können.
Dazu sei gesagt, einige der Programme laufen im Fenster andere nur im Hintergrund. Das heißt ich muss diese Programme jeweils anders behandeln, da mir einmal ein Window Handle zur Verfügung steht und im anderem Fall ebend nicht.

Das Starten der Programme habe ich hingekriegt ..

If AppName = MeinemBuffer[0] then
ShellExec( 0, 'Open', AppName + '.exe', '', Path, SW_SHOW)
else if AppName = MeinemBuffer[1] then
ShellExec( 0, 'Open', AppName + '.exe', '', Path, SW_HIDE);

nur das stoppen muss ich mir jetzt mal was überlegen..

..danke für die Tips

Grüße Tyrael

Tyrael Y. 20. Aug 2003 09:38

Re: Starten und Stoppen einer Applikation
 
@sakura das mit deem WM_QUIT wollte ich mal ausprobieren und habe folgendes geschrieben..


Handle := FindWindow(nil, progName);
Windows.SendMessage(Handle, WM_QUIT,0,0);

... nur WM_QUIT ist nicht definiert erzählt mir ein Compiler
... wenn ich WM_QUIT als Cardinal definiere.. krieg ich die Meldung
das WM_QUIT nicht initialisert worden ist, wie kann ich dennn WM_QUIT als Windows Nachricht nutzen ?


danke schon mal

schöne Grüße Tyrael

Tyrael Y. 20. Aug 2003 09:54

Re: Starten und Stoppen einer Applikation
 
äh, :oops: , sry habe vergessen die unit messages einzubinden jetzt kennt er WM_QUIT...

....aber es funktioniert trotzdem nicht

... ich glaube es liegt an FindWindow, da ich den ersten Parmater auf nil setzte...

FinWindow ist so definiert FindWindow(ClassName, WindowName)..
..ich benutze es um ein Handle auf das Fenster zu kriegen...

weiss einer Rat wie ich den Classname rausfinde ??

The-X 9. Okt 2003 14:09

Re: Starten und Stoppen einer Applikation
 
Als Tool um die Classnames rauszufinden kann ich WinForce empfehlen...

WinForce.zip 483K

Erst lässt man die Prozesse auflisten (Pfeil-Icon),
dann "zieht" man das WinForce-Icon auf das Fenster dessen Klasse man rausfinden will
und lässt die Maustaste los

WinForce zeigt dann Informationen wie Classname, WindowHandle, ParentWindow u.a. an

Das Proggy kann noch mehr aber das wäre dann wohl [OT] ;)


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