Bluesteel
20.02.2009, 22:53
Ein externes Programm ausführen
Mit dem Befehl ShellExecute(); kann man andere Programme oder sonstige Dateien aufrufen. Die Funktion verhält sich genau wie Start->Ausführen, Dateien werden mit dem zugeteilten Programm geöffnet, Programme gestartet, Internetadressen im Standardbrowser geladen.
Um den Befehl nutzen zu können, müsst ihr die Unit ShellAPI zu eurem Uses Bereich hinzufügen.
Der Befehl erwartet die folgenden Befehle:
ShellExecute(HWND hwnd, LPCTSTR Operation, LPCTSTR Dateiname, LPCTSTR Parameter, LPCTSTR Verzeichnis, INT Anzeigemodus);
Erklärung der einzelnen Parameter:
HWND hwnd:
Einfach Application.Handle einsetzen. Der Parameter bestimmt den Parent des auszuführenden Programms, wenn in diesem Z.B. eine MessageBox käme, würde sie im eigenen Programm angezeigt werden.
LPCTSTR Operation:
Legt fest, was mit der Datei gemacht wird, drei Möglichkeiten: 'open', 'print' oder 'explore'.
'open' führt das angegebene Programm aus, öffnet sie oder öffnet den Ordner, je nachdem was als Dateiname angegeben wird.
'print' sollte nur bei Dokumenten verwendet werden, die dadurch gedruckt werden. Wird 'print' und ein Programm angegeben, wird dieses ausgeführt.
'explore' öffnet den angegeben Ordner im Explorer.
LPCTSTR Dateiname:
Der komplette Pfad der Datei, die ausgeführt/gestartet werden soll. Kann auch nur ein Ordnerpfad sein, dann wird dieser geöffnet.
Beispiel: 'C:\windows\winmine.exe
LPCTSTR Parameter:
Hier kann man dem Programm Parameter übergeben.
Wenn man ein Dokument öffnet, sollte hier nil eingesetzt werden.
LPCTSTR Verzeichnis:
Hier kann man das Verzeichnis, aus dem das Programm aufgerufen zu werden denkt, manipulieren, meist reicht es, hier nil einzusetzen.
INT Anzeigemodus:
Legt fest, wie das Programm angezeigt wird, viele Möglichkeiten:
SW_HIDE
SW_MAXIMIZE
SW_MINIMIZE
SW_RESTORE
SW_SHOW
SW_SHOWDEFAULT
SW_SHOWMAXIMIZED
SW_SHOWMINIMIZED
SW_SHOWMINNOACTIVE
SW_SHOWNA
SW_SHOWNOACTIVATE
SW_SHOWNORMAL
Für gewöhnlich reichen diese 4 völlig aus:
SW_SHOWNORMAL zeigt das Fenster in seiner normalen Größe an, SW_SHOWMAXIMIZED zeigt das Fenster maximiert an, SW_SHOWMINIMIZED zeigt es minmiert an und SW_HIDE zeigt es gar nicht an, ausgeführt wird es dennoch und auch im Task Manager ist der Prozess sichtbar.
Die anderen können bei Bedarf in der Hilfe nachgelesen werden.
Mit dem Befehl ShellExecute(); kann man andere Programme oder sonstige Dateien aufrufen. Die Funktion verhält sich genau wie Start->Ausführen, Dateien werden mit dem zugeteilten Programm geöffnet, Programme gestartet, Internetadressen im Standardbrowser geladen.
Um den Befehl nutzen zu können, müsst ihr die Unit ShellAPI zu eurem Uses Bereich hinzufügen.
Der Befehl erwartet die folgenden Befehle:
ShellExecute(HWND hwnd, LPCTSTR Operation, LPCTSTR Dateiname, LPCTSTR Parameter, LPCTSTR Verzeichnis, INT Anzeigemodus);
Erklärung der einzelnen Parameter:
HWND hwnd:
Einfach Application.Handle einsetzen. Der Parameter bestimmt den Parent des auszuführenden Programms, wenn in diesem Z.B. eine MessageBox käme, würde sie im eigenen Programm angezeigt werden.
LPCTSTR Operation:
Legt fest, was mit der Datei gemacht wird, drei Möglichkeiten: 'open', 'print' oder 'explore'.
'open' führt das angegebene Programm aus, öffnet sie oder öffnet den Ordner, je nachdem was als Dateiname angegeben wird.
'print' sollte nur bei Dokumenten verwendet werden, die dadurch gedruckt werden. Wird 'print' und ein Programm angegeben, wird dieses ausgeführt.
'explore' öffnet den angegeben Ordner im Explorer.
LPCTSTR Dateiname:
Der komplette Pfad der Datei, die ausgeführt/gestartet werden soll. Kann auch nur ein Ordnerpfad sein, dann wird dieser geöffnet.
Beispiel: 'C:\windows\winmine.exe
LPCTSTR Parameter:
Hier kann man dem Programm Parameter übergeben.
Wenn man ein Dokument öffnet, sollte hier nil eingesetzt werden.
LPCTSTR Verzeichnis:
Hier kann man das Verzeichnis, aus dem das Programm aufgerufen zu werden denkt, manipulieren, meist reicht es, hier nil einzusetzen.
INT Anzeigemodus:
Legt fest, wie das Programm angezeigt wird, viele Möglichkeiten:
SW_HIDE
SW_MAXIMIZE
SW_MINIMIZE
SW_RESTORE
SW_SHOW
SW_SHOWDEFAULT
SW_SHOWMAXIMIZED
SW_SHOWMINIMIZED
SW_SHOWMINNOACTIVE
SW_SHOWNA
SW_SHOWNOACTIVATE
SW_SHOWNORMAL
Für gewöhnlich reichen diese 4 völlig aus:
SW_SHOWNORMAL zeigt das Fenster in seiner normalen Größe an, SW_SHOWMAXIMIZED zeigt das Fenster maximiert an, SW_SHOWMINIMIZED zeigt es minmiert an und SW_HIDE zeigt es gar nicht an, ausgeführt wird es dennoch und auch im Task Manager ist der Prozess sichtbar.
Die anderen können bei Bedarf in der Hilfe nachgelesen werden.