VB 5/6-Tipp 0062: Parameter an EXE mit Command$ übergeben
von ActiveVB
Beschreibung
Mit der Umgebungsvariablen Command$ besteht die Möglichkeit eine Exe-Datei mit Parametern ausführen zu lassen. Beliebtes Beispiel hierfür das starten der EXE über das Anklicken eines zugehörigen Dokumentes. Demonstriert wird das hier mit Hilfe des Tipp 1. Es wird eine Dateiendung registriert und einer EXE zugeordnet, dass diese mit dem Parameter der aufrufenden Datei gestartet wird.
Dieser Tipp funktioniert entweder nur in kompilierter Form oder benötigt eine DLL/OCX-Datei. Diese Binärdateien sind dem Tipp hinzugefügt worden, um seinen Funktionsumfang darstellen zu können. Vor dem Upload wurden sie auf Viren geprüft.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektgruppe Gruppe1.vbg ------------- '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Textfeld "Text4" ' Steuerelement: Textfeld "Text3" ' Steuerelement: Textfeld "Text2" ' Steuerelement: Textfeld "Text1" ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Beschriftungsfeld "Label4" ' Steuerelement: Beschriftungsfeld "Label3" ' Steuerelement: Beschriftungsfeld "Label2" ' Steuerelement: Beschriftungsfeld "Label1" 'Dieser Source stammt von http://www.ActiveVB.de 'Sollten Sie Fehler entdecken oder Fragen haben, dann 'mailen Sie mir bitte unter: Reinecke@ActiveVB.de Private Declare Function RegCreateKey Lib "advapi32.dll" Alias _ "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As _ String, phkResult As Long) As Long Private Declare Function RegSetValue Lib "advapi32.dll" Alias _ "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As _ String, ByVal dwType As Long, ByVal lpData As String, _ ByVal cbData As Long) As Long Private Const HKEY_CLASSES_ROOT As Long = &H80000000 Private Const MAX_PATH As Long = 260& Private Const REG_SZ As Long = 1& Private Sub Eintrag(ByVal AppName As String, ByVal AppPath As String, _ ByVal AppReg As String, ByVal AppExt As String) Dim Result As Long, hKey As Long '### Generiert den neuen Eintrag Result = RegCreateKey(HKEY_CLASSES_ROOT, AppReg, hKey) Result = RegSetValue(hKey, "", REG_SZ, AppName, 0&) '### Generiert die Assoziotion mit der Endung Result = RegCreateKey(HKEY_CLASSES_ROOT, "." & AppExt, hKey) Result = RegSetValue(hKey, "", REG_SZ, AppReg, 0&) '### Setzt den ausführenden Pfad für die Anwendung Result = RegCreateKey(HKEY_CLASSES_ROOT, AppReg, hKey) Result = RegSetValue(hKey, "shell\open\command", REG_SZ, _ AppPath & " %1 /open/", MAX_PATH) End Sub Private Sub Command1_Click() Call Eintrag(Text1.Text, Text2.Text, Text3.Text, Text4.Text) End Sub Private Sub Form_Load() Text2.Text = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & "Project2.exe" End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp -------------- '------------- Anfang Projektdatei Project2.vbp ------------- '--------- Anfang Formular "Form2" alias Form2.frm --------- ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Textfeld "Text2" ' Steuerelement: Textfeld "Text1" Option Explicit Private Sub Command1_Click() Beep End Sub '---------- Ende Formular "Form2" alias Form2.frm ---------- '--------- Anfang Modul "Module2" alias Module2.bas --------- Option Explicit Sub Main() Dim Pos As Long Dim Path As String Dim FFN As Integer If Command$ <> "" Then Pos = InStr(1, Command$, "/open/") If Pos <> 0 Then Path = Trim$(Left$(Command$, Pos - 1)) Form2.Text2.Text = Path FFN = FreeFile Open Path For Input As #FFN Form2.Text1.Text = Input$(LOF(FFN), FFN) Close FFN Else '### Weitere Befehle End If End If Form2.Show End Sub '---------- Ende Modul "Module2" alias Module2.bas ---------- '-------------- Ende Projektdatei Project2.vbp -------------- '-------------- Ende Projektgruppe Gruppe1.vbg --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 11 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von MR am 18.11.2008 um 02:03
Wenn ich Euch nich hätte.... cool :)) danke!!
Kommentar von eshat am 27.02.2005 um 23:54
:) coole sache danke :)
Kommentar von Kracher am 10.10.2004 um 23:50
für alle die genaueres wissen wollen es wird in der txt-datei im archiv des projekt gut erklärt. einfach downloaden ...entpacken und z.b Project2.txt lesen ;)
Kommentar von nope_ am 26.02.2004 um 21:18
echt cool ... aba ich würd auf kein fall links unten als extension exe eintragen :D .. des könnte nämlich problematisch werdn (hab damit mein ganzes system abgeschossen)
Kommentar von JensHans am 26.08.2003 um 15:50
herr wichmann wohnen sie in berlin, besuchten sie dort eine gesamtschule, bitte um meldung.
Kommentar von Clemens Klix am 27.04.2002 um 22:24
Kann ich irgendwie den Pfad der geöffneten Datei anzeigen lassen?
Kommentar von Andreas am 12.02.2002 um 13:04
Ich will einer EXE Datei Parameter übergeben und diese verwenden zb. für Standartdrucker zu ändern und das Druckfach einstellen.
Kommentar von Patrick am 14.08.2001 um 21:35
Ich muß eine EXE- Datei aufrufen und an sie Parameter übergeben.Dies funktioniert sehr gut mit dem Shell Befehl.
Syntax: Shell "C:\...\Anwendung.exe Par1 Par2" ,das Problem beginnt da wo ich von dieser Anwendung Parameter zurück bekomme in der Form Syntax: code=1 & par1=string & par2=string...,denn die werden nicht ausgegeben nur im Dos-Fenster was der Shell-befehl aber nicht öffnet.Außerdem wär es für mich sinnvoller wenn ich diese Variablen direkt an VB übergeben könnte.Die Anwendung ist in C geschrieben und nutzt das STDIN und STDOUT,wäre echt toll wenn mir wer helfen könnte. Cu Patrick
Kommentar von Marc Reichelt am 11.07.2001 um 16:34
Ich habe mein Problem selber lösen können, man muss den Befehl SHELL verwenden!
Kommentar von Marc Reichelt am 11.07.2001 um 13:08
Wie kann man denn jetzt eigentlich einfach NUR eine stinknormale EXE-Datei aufrufen?
Ich komme mit der zum Herunterladen angebotenen Projekt2 nicht klar!
Kommentar von Patrick Wichmann am 03.05.2001 um 09:20
Ich suche nach einer ähnlichen Möglichkeit. Und zwar soll Text aus einem anderen Programm mit dem Aufruf bzw. der Nennung eines Parameters %1 übergeben werden, z.B. "C:\Programme\Benachrichtigung.exe %1".
Geht das auch so oder so ähnlich ?