Autor |
Beitrag |
Querscheck
Hält's aus hier
Beiträge: 10
|
Verfasst: So 13.10.02 22:03
Tach!
Ich bin noch ein echter Delphi Newbie. Deshalb meine Frage!
Ich möchte auf Knopfdruck (Button1) ein anderes Programm starten lassen, wie z.B Note Pad,Word,Scan Disk usw.
Was muss ich für einen Quellcode eingeben ??
Gibt es irgendwo eine Seite, wo ganz viele Codes, Methoden, Funktionen usw. mit Erklärung stehen??
Danke!
Querscheck
(13.10.02 30:01 Tino) Signatur entfernt (siehe Richtlinien) & Topc verschoben.
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: So 13.10.02 22:13
Hi Querscheck,
erstmal würde ich an deiner Stelle die Suchfunktion bemühen  Da findest sicher schon ein paar Threads zu dem Thema.
Also, wenn du ein Programm starten willst, kannste WinExec verwenden, was allerdings nur aus Kompatibilitätsgründen noch verfügbar ist. Dann kannste noch ShellExecute verwenden, aber das sollte zum Starten von Dateien, also zum Starten von dem Programm, das dem Dateityp zugeordnet ist. Wenn man eine andere Anwendung starten will, so sollte man eigentlich CreateProcess verwenden. Aber mal ehrlich: Du kannst dir eine von den Funktionen aussuchen.
Am Einfachsten ist WinExec, da es nur 2 Parameter erwartet. Der erste Parameter verlangt den Pfad der Anwendung und der 2. erwartet dann die Einstellung, wie die Anwendung angezeigt werden soll.
Wenn du weitere Fragen haben solltest, frage einfach nochmal.
_________________ Viele Grüße
Jakob
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 14.10.02 00:33
Brrrrrrrr
WinExec sollte man garnicht mehr erwähnen. Wie du schon bemerkt hast is es nur noch aus Kompatibilitätsgründen verfügbar. Eines Tages nimmt Microsoft WinExec aus dem Angebot und dann funktionieren die Programme nicht mehr. Ich gebe allerdings zu, daß WinExec in vielen Beispielen noch vorkommen (sollte man als kennen). So sehe oft, daß einige Zeitschrifte in ihren VB Scripts ganz gerne WinExec benutzen. Sollte man aber dennoch nicht benutzen.
ShellExecute ist durchaus zum starten von Programmen geeignet. Der Irrglaube beruht dadrauf, daß in der API Hilfe der Satz steht:
Zitat: | Die Funktion ShellExecute öffnet oder druckt die angegebene Datei. |
Liest man die gleiche Hilfe aber weiter, dann kommt man zu diesem Kommentar:
Zitat: | Kommentare
Die durch den Parameter FileName bezeichnete Datei kann eine Dokumentdatei oder eine ausführbare Datei sein. Wenn es sich um eine Dokumentdatei handelt, wird sie von dieser Funktion geöffnet oder gedruckt, je nach dem welchen Wert der Parameter Operation hat. Wenn es sich um eine ausführbare Datei handelt, wird sie von dieser Funktion geöffnet, auch wenn Operation auf den String "print" zeigt. |
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Mo 14.10.02 14:35
Zitat: | ShellExecute ist durchaus zum starten von Programmen geeignet. Der Irrglaube beruht dadrauf, daß in der API Hilfe der Satz steht: |
Ich sagte ja auch nicht, dass ShellExecute nicht geeigent für das Starten von Programmen sei, aber eigentlich ist die Funktion zum "Laden" bzw. "Drucken" von Dateien da. Das man damit auch Programme laden kann ist klar.
_________________ Viele Grüße
Jakob
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 14.10.02 17:23
Glaubst du? Ich gebe zu, daß CreateProzess der offizieller Nachfolger von WinExec und einiger weitere Funktionen ist, aber es geht immer drum was man machen will. Wenn du nur mit der API ein Fenster erstellen willst, dann hast du die Möglichkeit CreateWindow zu nehmen oder CreateDialog. Bei dem einem mußt du noch einige Zeilen investieren bis es soweit ist, bei dem anderem kannst du fast schon loslegen. Nun kann man sagen, daß CreateWindow eigentlich der richtige Weg ist weil es da mehr Möglichkeiten gibt. Aber warum wenn ich nur ein Dialogfenster brauche.
ShellExecute startet Anwendungen und macht nichts kaputt (zumindest hab ich noch nie was von gehört). Es öffnet nicht nur zufällig Anwendungen, so daß man es als Trick bezeichnenn könnte, sondern es steht auch in der OnlineHilfe. Wenn ich den Prozess beobachten will und sonstiges, dann nehme ich CreateProzess. Wenn mich nicht interresiert was mit der Anwendung weiter passiert, dann nehme ich ShellExecute. Außerdem steht da OPEN und nicht LOAD.
ShellExecute ist für mich also eine von zwei offiziellen Möglichkeiten eine Anwendung zu starten. Das ganze ohne den Beigeschmack von "eigentlich nimmt man ...". Es kommt einfach drauf an was man will.
Ich bin aber bereit mich überzeugen zu lassen. Ist auch ein Diskussiunsforum hier. Jeder der mich überzeugen kann bitte melden. So gut kenne ich mich mit der API auch nicht aus.
Übrigens, seit neustem ist ShellExecute noch zum öffnen von Explorer gedacht. Dafür gibt es den Schlüssel EXPLORE.
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Mo 14.10.02 17:52
Ich werde nochmal nachlesen. Auf jeden Fall habe ich das so "gelernt". Gut ich kann mich auch irren, was gut sein könnte.  Wenn es so ist, dann kann ich ja froh sein, denn dann habe ich was gelernt 
_________________ Viele Grüße
Jakob
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 14.10.02 18:37
Popov hat folgendes geschrieben: | Wenn du nur mit der API ein Fenster erstellen willst, dann hast du die Möglichkeit CreateWindow zu nehmen oder CreateDialog. Bei dem einem mußt du noch einige Zeilen investieren bis es soweit ist, bei dem anderem kannst du fast schon loslegen. |
CreateDialog erfordert allerdings eine existierende Dialogressource. Die musst du ja auch erst mal "zusammenbauen", und wenn du einen veralteten Editor wie den RessourceWorkshop von Borland hast, dann kannst du auf neue Sachen (Listview, Treeview, usw.) gar nicht mal zugreifen.
Zitat: | Nun kann man sagen, daß CreateWindow eigentlich der richtige Weg ist weil es da mehr Möglichkeiten gibt. Aber warum wenn ich nur ein Dialogfenster brauche. |
Das kann man nicht sagen! CreateWindow ist zum Erzeugen von Fenstern gedacht (auf der Grundlage von Nichts, um es mal so zu nennen), CreateDialog erzeugt einen Dialog anhand einer Ressource. Das sind IMHO zwei Paar Schuhe.
Zitat: | Übrigens, seit neustem ist ShellExecute noch zum öffnen von Explorer gedacht. Dafür gibt es den Schlüssel EXPLORE. |
Das geht auch so:
Quelltext 1:
| ShellExecute(0,'open',nil,nil,nil,SW_SHOW); |
und klappt bereits seit einiger Zeit. Ich bin an diesem Phänomen früher nämlich fast verzweifelt, weil auf allen anderen Systemen (98, 2000, XP) mein Programm startete, nur unter NT4 nicht. Bis ich merkte, dass die EXE-Datei anhand der Prozess-ID nicht korrekt gefunden wurde. Die Variable war demzufolge leer, und der Explorer erschien ... 
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 14.10.02 19:37
Ok - der Vergleich ist nicht der beste. Sind das zwei paar Schuhe? Ja. Das war auch was ich sagen wollte. Allerdings ist das eine einfacher als das andere und das Ergebnis ist ein Fenster  . Auch wenns nur ein Dialogfenster ist.
@DeCodeGuru. Ich hab das nicht geschrieben um irgendeinen zu lehren. Ich hab nur Argumente eingebracht und ware auf Gegenargumente. Ich kann mich auch irren.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 14.10.02 19:58
Popov hat folgendes geschrieben: | Allerdings ist das eine einfacher als das andere |
Einfacher ist es nicht - nur weniger umfangreich. 
|
|
|