Entwickler-Ecke
Dateizugriff - ShellExecute
chris_davidi - Di 09.09.03 10:40
Titel: ShellExecute
Hi.
Per ShellExecute kann man ja Programme starten.
Delphi-Quelltext
1:
| ShellExecute(Application.Handle, 'open', 'C:\Programme\MSWorks\msworks.exe', nil, nil, SW_SHOW); |
Kann man aber auch machen, dass ich dem Programm wo ich gestartet einen Wert gebe und es über diesen Wert auch wieder schließen kann.
Stelle es mir so vor:
Programm wird per Button1.Click mit ShellExecute gestartet, bekommt den Wert X und wenn ich auf Button2 klicke, dass dieser das Programm wieder beendet, indem er x.close oder so etwas in der Art sagt.
Habt ihr da eine Idee, bzw. Code?
foxy - Di 09.09.03 10:47
mach dir mal genau gedanken darüber
1. du musst wissen wo sich das zu startende programm befindet
2. wenn du das weist, spillest du erst mal den namen und pfad in 2 strings auf
wie das geht steht schon hier im forum :) suchen benutzen
dann benutzt du in dem onclick ereignis eben die shellexecute mit den 2 strings ... somit startest du dein programm
dein programm schliessen also das, dass du geöffnet hast, wird etwas schwieriger .. wenn du erst ma da bist melde dich wieder
chris_davidi - Di 09.09.03 11:26
Ok, das weiß ich. Aber Schritt 2 ist mir unklar, verstehe ich nicht. Und über die Hilfe finde ich auch nichts wissenswertes, nur zuviele Beiträge. *g*
Delete - Di 09.09.03 13:11
foxy will sicher darauf hinaus, dass du Pfad- und Dateiname trennst und dann entsprechend getrennt bei
ShellExecute angibst. Das ist aber IMHO nicht notwendig, da ich mal vermute, dass dein Beispielaufruf im ersten Posting funktioniert und Works startet. Oder?
Zum Beenden hast du IMHO zwei sinnvolle Möglichkeiten.
1. Du kennst den Klassennamen (empfehlenswert) und/oder Fenstertitel (weniger empfehlenswert, weil evtl. veränderbar und sprachabhängig) und kannst dann das Fenster mit
FINDWINDOW suchen und via SendMessage + WM_CLOSE abschießen.
2. Du machst einen
PROZESS SNAPSHOT und suchst gezielt nach dem Dateinamen. Dann killst du den Prozess.
Delete - Di 09.09.03 16:08
Oder du startest mit ShellExecuteEx oder CreateProcess und merkst dir die ProzessID, dann mußt du sie nachher nicht erst suchen.
wham1010 - Mi 12.11.03 23:46
wo wir grad dabei sind (wollt nicht schon wieder ein neues Thema bzgl. ShellExecute öffnen!):
Hab folgende Zeile in mein Programm eingefügt:
Delphi-Quelltext
1:
| ShellExecute(0, 'open', PChar('mailto:my.name@provider.at?subject=Test&body=123456789'), nil, nil, SW_HIDE); |
dachte mir, dass nun das Outlook-Fenster zwar geöffnet, aber nicht sichtbar ist?! achja, und gibt es auch eine möglichkeit, das ich sie so erstellte mail auch gleich wegschicke (also, von meinem Programm aus, nicht von Outlook :lol: ?
Moderiert von
Tino: Delphi-Tags hinzugefügt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!