Ein anderes Programm ausgeführt in C++
Möchte ich aus der Ferne ausführen einer anderen Anwendung aus meinem C++ Programm. Bisher spielte ich zusammen mit der CreateProcess (...) - Funktion und es funktioniert gut.
Das problem ist jedoch, dass ich, müssen Sie den vollständigen Pfad von dem anderen Programm aber ich weiß nicht, das Verzeichnis auf der. Also, was ich will, ist, dass ich nur noch den Namen eingeben, der von dem anderen Programm, wie wenn Sie geben Sie "cmd" oder "winword" in Lauf... es öffnen sich die entsprechenden Programme.
Vielen Dank im Voraus,
Russo
- Setzen Sie den vollständigen Pfad der Anwendung in der PATH-Umgebungsvariablen.
- funktioniert nicht; die PATH-Umgebungsvariable (trotz seines namens) ist in der Regel eine Liste von Pfaden. Welche davon brauchen Sie?
- Analysieren Sie die PATH variable und für jedes element überprüfen ob das Programm vorhanden ist 🙂
- Nee, du hast die
SearchPath()
Funktion für, die. - Ich habe es. Ich erstellen Sie eine neue system-variable im programm möchte ich nennen, mit seinem Weg und sich darauf verlassen, dass Variablen bei der Verwendung von CreateProcess. Trotzdem danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit CreateProcess wie diese:
dann die PATH-variable wird nicht verwendet werden. Sie müssen den zweiten parameter verwendet:
Sehen http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx für details.
Du suchst
ShellExecute()
. Das wird sogar funktionieren, wenn Sie übergeben Sie einen geeigneten URL, genau wie das Menü Ausführen.Den Verzeichnissen der Programme, die Sie ausführen können, von der start -> ausführen, sind der PATH-Variablen Hinzugefügt. Sie können hinzufügen den Ordner, in Ihr Programm auf den PFAD und verwenden Sie dann CreateProcess(). Jedoch sagen Sie, Sie weiß nicht, das Verzeichnis, also kann man wohl nicht tun.
Kennen Sie eine teilweise Weg? Zum Beispiel, wussten Sie, dass Ihre exe-Datei wird immer in C:\something\something\ oder einen Unterordner von diesem Pfad? Wenn ja, suchen Sie FindFirst() und FindNext() zum auflisten aller Dateien in diesem Verzeichnis und suchen nach der exe-Datei, dann verwenden CreateProcess() wenn Sie Ihre exe-Datei.
http://msdn.microsoft.com/en-us/library/aa365200%28VS.85%29.aspx zeigt, wie die Liste der Dateien in einem Verzeichnis. Sie haben zu ändern, um die Suche auch Unterverzeichnisse (zum Beispiel, machen Sie eine rekursive Funktion).
Programme starten und zählen auf PFAD in keiner Weise gilt als unsicher Codierung. System-Pfade können verschmutzt mit Standorten, die nicht richtig befestigen, wie ein Netzwerk-Laufwerk. Der beste Weg, um eine Anwendung zu starten ist, starten Sie die ausführbare Datei aus, wo genau es steht, und legen Sie die CWD auf den Speicherort der ausführbaren Datei installiert. Sonst könnten Sie starten, die bösartigen code.
Wahrscheinlich eine Kombination von Informationen, die von hier aus wird Ihnen helfen, die Lage richtig:
Erkennung der installierten Programme über die registry
Greg