Probleme beim ausführen einer vbs-Datei

Hallo,

ich habe mal wieder ein merkwürdiges Problem:

Ich starte zwei Programme mit einer vbs-Datei im Autostartordner:

WScript.Sleep 1000
Set ShellWSH = CreateObject(„WScript.Shell“)
ShellWSH.Run „“„C:\Programme\Miranda\miranda32.exe“"", 4, False
WScript.Sleep 3000
Set ShellWSH = CreateObject(„WScript.Shell“)
ShellWSH.Run „“„C:\Programme\Allway Sync\Bin\syncappw.exe“"", 4, False
WScript.Sleep 5000
Set ShellWSH = CreateObject(„WScript.Shell“)
ShellWSH.Run „“„C:\Dokumente und Einstellungen\ICH\Eigene Dateien\vbs\minimieren_allwayssync.vbs“"", 4, False

Da das Progg Allway Sync nicht im Tray startet (obwohl es ein Einstellung dafür gibt??) habe ich in einer zweiten Datei folgende Tastenkombi hinterlegt, die das Prog ins Tray minimiert:

Set WSHShell = CreateObject(„Wscript.Shell“)

WScript.Sleep 0
WSHShell.Sendkeys „^{m}“
wscript.sleep 0

WScript.Quit

Die Datei 1 läuft wunderbar die Programme starten.
Das Fenster von Allway Sync ist im Vordergrund aber nix passiert.
Starte ich die 2. Datei von Hand läuft kurz die Eieruhr aber es passiert nichts.

Nun das merkwürdige ist nun:

  1. Hat das ganze bis vor zwei Std. noch funktioniert
  2. Funktioniert das auf meinem zweiten Rechner immer noch.

Hat jemand ne Idee warum das eine Script läuft und das andere nicht?

Vielen Dank schon mal

Gruß tifi

PS: Das ganze läuft auf einem WinXP Pro mit SP2 Rechner…

Hallo,

WScript.Sleep 1000
Set ShellWSH = CreateObject("WScript.Shell")
ShellWSH.Run """C:\Programme\Miranda\miranda32.exe""", 4,False
WScript.Sleep 3000
Set ShellWSH = CreateObject("WScript.Shell")
ShellWSH.Run """C:\Programme\Allway Sync\Bin\syncappw.exe""",4, False
WScript.Sleep 5000
Set ShellWSH = CreateObject("WScript.Shell")
ShellWSH.Run """C:\Dokumente und Einstellungen\ICH\Eigene
Dateien\vbs\minimieren\_allwayssync.vbs""", 4, False

ob das etwas mit Deinem Problem zu tun hat, weiß ich nicht, aber wieso steht in Deinem Script drei mal:

Set ShellWSH = CreateObject("WScript.Shell")

?
Ein mal am Start reicht. Ob das zu Problemen führt, weiß ich nicht, es ist zumindest überflüssig.

Wieso eigentlich:
ShellWSH.Run „“„C:\Programme\Miranda\miranda32.exe“"", 4,False

und nicht

ShellWSH.Run „C:\Programme\Miranda\miranda32.exe“, 4,False ? Was ,4,False heißt, weißt Du?

An den Anfang würde ich noch schreiben:

Dim ShellWSH

Und an das Ende:

Set ShellWSH = Nothing

Das sind eventuell nur Kleinigkeiten, die an Deinem Code ‚unsauber‘ aussehen, ob das etwas mit dem Verhalten des Scripts zu tun hat, weiß ich nicht.

Ich habe Dein Projekt mal an den Inhalt meiner Platte angepasst und entsprechend meiner Vorschläge umgeschrieben …

Option Explicit

Dim ShellWSH
Set ShellWSH = CreateObject("WScript.Shell")

WScript.Sleep 1000
ShellWSH.Run "C:\Programme\Inkscape\inkscape.exe", 4,False

WScript.Sleep 5000
ShellWSH.Run "C:\VBSTest.vbs", 4, False

Set ShellWSH = Nothing

Das läuft so bei mir.

Gruß, Rainer

Danke für die „Aufarbeitung“.

Das Problem ist aber nicht das Script welches Du aufgeräumt hast, sondern das zweite, welches die Tastenkombi senden soll.

Ich habe Deine Änderungen ausprobiert -> hilft nix.
Die Programme starten in der angegebenen Reihenfolge nur die Tastenkombi wird nicht gesendet und das Fenster bleibt offen ->> *nerv*

Wie gesagt auf einem zweiten Rechner läuft alles?! Der ist allerdings mit WinXP Home kann das was machen?

Gruß tifi

Hallo noch mal,

ich habe eben festgestellt, dass es auch mit Word-Dateien Probleme gibt.

Beim Doppelklick öffnet sich zwar Word, allerdings sagt der Rechner er könne das Worddokument nicht finden.
Gehe ich in Word über Datei -> öffnen wird das Doc geladen

???

Was das nun wieder?
Ich denke, dass das zusammen hängt.

Gruß tifi

Hallo,

Das Problem ist aber nicht das Script welches Du aufgeräumt
hast, sondern das zweite, welches die Tastenkombi senden soll.

Ich habe Deine Änderungen ausprobiert -> hilft nix.
Die Programme starten in der angegebenen Reihenfolge nur die
Tastenkombi wird nicht gesendet und das Fenster bleibt offen
->> *nerv*

ich glaube, ich verstehe das Problem jetzt. Dein SendKeys kommt nicht da an, wo es hin soll.

SendKeys simuliert nur einen Tastenanschlag, wo der ankommt, kann das Programm nicht steuern, dafür mußt Du selbst sorgen.

das letzte Programm vorher öffnest Du mit:
ShellWSH.Run „“„C:\Programme\Allway Sync\Bin\syncappw.exe“"", 4, False

Erinnerst Du Dich, daß ich gefragt hatte, ob Du weißt, was die 4 bedeuet?

Auszug aus Script56.chm

4: Zeigt ein Fenster in der jeweils aktuellen Größe und Position an. 
Das aktive Fenster bleibt aktiv. 

Das Programm wird ohne Focus geöffnet, bekommt das Zeichen nicht.

Ersetze die 4 durch eine 1.

1: Aktiviert ein Fenster und zeigt es an. Wenn das Fenster minimiert 
oder maximiert ist, stellt das System es mit seiner ursprünglichen 
Größe und Position wieder her. Eine Anwendung sollte dieses Flag 
angeben, wenn das Fenster zum ersten Mal angezeigt wird. 

und lass den Aufruf einer weiteren .VBS Datei weg, das SendKeys kannst Du auch mit in das erste Script schreiben. Eventuell ist auch die Wartezeit zu kurz, dann wird das Zeichen gesendet, bevor das Fenster aktiv ist. Wenn es nicht geht, solltest Du also den Wert für Sleep vor dem Sendkeys erhöhen.

Das würde dann so aussehen …

Dim ShellWSH
Set ShellWSH = CreateObject("WScript.Shell")

WScript.Sleep 1000
ShellWSH.Run "C:\Programme\Miranda\miranda32.exe", 4, False
WScript.Sleep 3000
ShellWSH.Run "C:\Programme\Allway Sync\Bin\syncappw.exe", 1, False
WScript.Sleep 5000
WSHShell.Sendkeys "^{m}"

… aber mir fällt noch etwas auf. Soll das Sendkeys die Fenster minimieren? Dann starte sie doch gleich minimiert, dann kannst Du Dir das sparen.

7: Zeigt das Fenster als minimiertes Fenster an. Das aktive Fenster bleibt aktiv. 





Dim ShellWSH
Set ShellWSH = CreateObject("WScript.Shell")

WScript.Sleep 1000
ShellWSH.Run "C:\Programme\Miranda\miranda32.exe", 7, False
WScript.Sleep 3000
ShellWSH.Run "C:\Programme\Allway Sync\Bin\syncappw.exe", 7, False

Gruß, Rainer

Hallo Rainer,

danke für die Mühe ABER:

Der Fehler liegt offensichtlich wo anders.
Ich habe, dank Deiner Tipps, das Script verkürtz

Dim ShellWSH
Set ShellWSH = CreateObject(„WScript.Shell“)

WScript.Sleep 4000
ShellWSH.Run „“„C:\Programme\Allway Sync\Bin\syncappw.exe“"", 1,False
WScript.Sleep 5000
WSHShell.Sendkeys „^{m}“

Set ShellWSH = Nothing

So bald ich das Sendkeys mit drin hab geht nichts mehr, auch der Programmstart nicht, lösche ich es raus startet das Prog wieder…

Die Tastenkombi minimiert das Prog nicht sonder legt es in den Tray.

Egal wie auch meine erste „Chaoten-Version“ lief schon!
Jetzt sind noch anderen Probleme mit Officedateien dazu gekommen.

Ich denke das bei einem Systemabsturz etwas mehr kaputt gegangen ist.

Danke

Gruß tifi