Autor Beitrag
chris_davidi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76

Windows 98 SE
Delphi 3
BeitragVerfasst: Di 09.09.03 10:40 
Hi.

Per ShellExecute kann man ja Programme starten.

ausblenden Delphi-Quelltext
1:
ShellExecute(Application.Handle, 'open''C:\Programme\MSWorks\msworks.exe'nilnil, 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 814

Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
BeitragVerfasst: 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

_________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
chris_davidi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76

Windows 98 SE
Delphi 3
BeitragVerfasst: 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*
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Suche in: Delphi-Forum, Delphi-Library FINDWINDOW suchen und via SendMessage + WM_CLOSE abschießen.

2. Du machst einen Suche in: Delphi-Forum, Delphi-Library PROZESS SNAPSHOT und suchst gezielt nach dem Dateinamen. Dann killst du den Prozess.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Win XP Prof.
D6 Pers
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
ShellExecute(0'open', PChar('mailto:my.name@provider.at?subject=Test&body=123456789'), nilnil, 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 user profile iconTino: Delphi-Tags hinzugefügt.
Licki
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 132

Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
BeitragVerfasst: Do 13.11.03 16:51 
Schaue mal unter www.pics-software.de/delphi/index.html , dort wirst du fündig.