mikrocontroller.net

Forum: PC-Programmierung Windows: Verknüpfungen "ausführen" oder mit Windows Installer starten?


Autor: Niklas Gürtler (erlkoenig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Leser,
ich schreibe gerade unter WinXP mit Ruby (wovon aus man aber auch 
Zugriff auf das Win32-API oder beliebige DLLs hat) ein Programm, welches 
unter anderem ein 2. Programm starten soll, und, nachdem dieses 2. 
Programm beendet wurde, eine Aktion durchführen soll.
Dieses 2. Programm wird normalerweise von Hand über einen 
Startmenü-Eintrag gestartet, aber das soll jetzt automatisch gehen. 
Leider besteht dieses Programm aus vielen einzelnen .exe-Dateien, und es 
ist nicht recht klar, welche man wie starten muss - der Task-Manager 
zeigt zwar den Namen der normalerweise laufenden .exe an, aber die kann 
man nicht direkt starten, denn offenbar muss man irgendwelche 
Kommandozeilenargumente [/? oder /help bringt natürlich nichts] 
übergeben oder eine der anderen .exe'n als Launcher verwenden oder einen 
Voodoo-Zauber durchführen, damit das Programm seine Lizenz-Daten findet.
Über den Startmenü-Eintrag sollte sich das Problem ja lösen lassen, doch 
dummerweise ist im Eigenschaften-Fenster der Verknüpfung das 
"Ziel"-Eingabefeld ausgegraut und es steht lediglich der Name des 
Programms drin, kein Pfad zu einer .exe-Datei. Wenn man die Verknüpfung 
(also die .lnk-Datei) selber mit einem Editor öffnet, steht da auch kein 
Pfad zu einer .exe-Datei drin. Allerdings steht da was von 
Windows-Installer und eine GUID - vielleicht startet der Windows 
Installer ja das Programm anhand dieser GUID. Auf microsoft.com habe ich 
aber nichts darüber gefunden, wie man den Windows Installer anweist, ein 
Programm zu starten (weder Kommandozeile noch Automation-API).
Eine andere Möglichkeit wäre es, wenn man den explorer anweisen könnte, 
die .lnk-Datei zu öffnen - wenn man einfach "explorer.exe 
C:\Pfad\zur\lnk\Datei" ausführt erscheint nur ein Fenster, wo man 
angeben soll, ob man die Datei speichern oder Ausführen möchte 
(Ausführen geht zwar, aber das Fenster stört doch...) - nur wie? Wenn 
man den Pfad zur .lnk-Datei in ein cmd.exe-Fenster eintippt, wird das 
Programm gestartet, aber wenn man von einem eigenen Programm heraus mit 
system() die .lnk-Datei "ausführt", passiert gar nichts.
Weiß jemand eine Möglichkeit, wie man den explorer dazu bringt, eine 
Verknüpfung zu öffnen, oder den Windows Installer dazu, ein bestimmtes 
Programm zu starten?
Vielen Dank im Voraus.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal probiert, was passiert, wenn Du statt system mit ShellExecute 
arbeitest?

Autor: Niklas Gürtler (erlkoenig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, das klingt recht vielversprechend, so etwas habe ich gesucht. Am 
Montag hab ich Gelegenheit, es auszuprobieren. Dankeschön :)

Autor: Niklas Gürtler (erlkoenig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Starten des Programms über die Verknüpfung funktioniert mit 
ShellExecuteEx zwar prinzipiell, aber auch wenn ich 
SEE_MASK_NOCLOSEPROCES setze ist hProcess immer 0, sodass ich nicht mit 
den Wait-Funktionen darauf warten kann, dass das Programm beendet wird, 
vermutlich weil da der Windows-Installer die Finger im Spiel hat und das 
asynchron gestartet wird. Weiß zufällig jemand, wie man das trotzdem 
synchron kriegt? Wenn nicht werden wir wohl mal den Support nerven...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.