Hallo zusammen,
das Ziel ist es neben einigen anderen Aufgaben (u.a. INI lesen, Dateien kopieren)
im Ergebnis eine als Aufrufparameter übergebene externe VB6 Anwendung
mit einem VB6 Programm zu starten.
Hierzu gehe ich wie folgt vor:
VB6 Projekt: besteht nur aus einer Sub Main() (also keine Forms)
- Ich werte die Aufrufparameter aus (vollständiger Pfad incl. Name der zu startenden Datei)
- Ich analysiere die Umgebung (Infos aus INI's usw.)
- Ich prüfe, ob die externe Anwendung schon gestartet ist
(Wenn ja, Fehlermeldung und Abbruch, sonst weiter)
- Sollte alles OK sein werden ein paar Dateien kopiert und dann wird über eine
Funktion, die aus der "Main" aufgerufen wird die externe Anwendung gestartet.
- Hierzu verwendete ich abwechselnd (natürlich immer nur eine Variante) folgenden Code in der aufrufenden Funktion:
Kern der Funktion "EXEStartOK"
nResult = Shell(sFile, vbNormalFocus) nResult = ShellExecute(hWnd, "", sFile, "", sWorkDir, SW_SHOWNORMAL) - Resultiert ein Fehler, wird eine Meldung angezeigt.
- Resultiert kein Fehler, wird die "Aufrufende VB6 Anwendung" ohne weitere
Meldung beendet. Man merkt ja, dass die aufgerufene Anwendung gestartet wurde.
Und nun mein Problem:
Alles funktioniert reibungslos, die Aufgaben werden erledigt und die externe Anwendung
startet. Und trotzdem resultiert bei meinem aufrufenden Programm eine Fehlermeldung.
Und zur Krönung, dieser Effekt tritt nur beim Start der EXE und nicht in der IDE auf.
Anwendungsgerüst
Sub Main()
Dim bExtAppIsRunning as Boolean
Dim bStartOK as Boolean
bStartOK = False
bExtAppIsRunning =IsEXERunning(sFile)
If Not bExtAppIsRunning Then
bStartOK = EXEStartOK(sFile)
End If
If Not bStartOK Then
If bExtAppIsRunning Then
MsgBox "Externe Anwendung ist bereits gestartet!"
Else
MsgBox "Beim Aufruf der externen Anwendung trat ein Fehler auf!"
End If
End If
End
End Sub Obwohl die externe Anwendung vorher nicht gestartet war und
im Ergebnis des Aufrufes erfolgreich gestartet wurde, resultiert
beim Ausführen der "EXE" (nicht in der IDE) die Fehlermeldung
==> "Externe Anwendung ist bereits gestartet!"
Wo ist mein Fehler?
Woran habe ich nicht gedacht?
Als evtl. wichtige Hintergrundinfo:
Das aufgerufene Programm führt natürlich einige Operationen aus und
meldet dann ein Ergebnis in Form einer MsgBox. Dies kann dann kurz
bestätigt werden und anschließend erscheint ein Login Dialog.
Es ist übrigens egal, ob ich den Code unter Win10 x64 oder unter WinXP
ausführe.
Hmm, trotzdem sieht es jedoch so aus, als ob "warum auch immer"
meine Abfrage auf "IsEXEXRunning" aus der "Main" doppelt ausgeführt wird.
Jeder Hinweis ist willkommmen
Danke schon jetzt
Tschaui
Woellmi |