Ich habe ein Profil erstellt, das u.a. die Outlook-Datei (*.pst) in den Sicherungsvorgang eingeschlossen hat und mehrmals am Tag automatisch mittels AllSync Scheduler aufgerufen wird. Damit kein Fehler bei der Sicherung auftritt, wenn Outlook läuft, habe ich das VB-Skript "KillTask.vbs" mit dem Task "outlook.exe" in das Profil eingebunden (Extern -> VB Skript -> Skript Profilstart). Dies funktioniert auch ohne Probleme. Das Problem, das ich jedoch habe, ist folgender Sachverhalt:
Wenn ich am PC arbeite und die Sicherung mittels der o.g. Profils von AllSnyc abläuft, wird die eMail-Nachricht, die gerade in Bearbeitung ist, gelöscht, da beim "Kill"-Task Outlook knallhart beendet wird und eine in Bearbeitung befindliche eMail-Nachricht nicht abgespeichert wird. Dies kommt zwar nicht oft vor; aber wenn es vorkommt, ist dies teilweise sehr ärgerlich.
Mein Ziel ist es, ein VB Skript einzusetzen, das mich beim Starten des o.g. Profils darauf hinweist, dass Outlook aktiv ist und mir Gelegenheit gibt, eine in Bearbeitung befindliche eMail-Nachricht abzuspeichern. Andererseits soll das VB Skript nach 60 Sekunden automatisch weiter ausgeführt werden, da in den meisten Fällen keine eMail-Nachricht in Bearbeitung ist oder ich mich nicht am PC befinde.
Ich habe dafür keine Lösung mittels eines VB-Skripts gefunden. Allerdings bin ich auch nicht "der" VB-Guru. Meine "Notlösung" unter Zuhilfenahme einer txt-Datei habe ich im Folgenden aufgeführt, damit verständlich wird, was ich meine bzw. wie eine Lösung mittels VB aussehen sollte:
Dim objShell
Set objShell = CreateObject("WScript.Shell")
Sleep 60
' "Sleep 60" für Realbetrieb einstellen
Function Sleep(Seconds)
objShell.Run """c:\Eigene Dateien\AllSync\Outlook_beenden.txt"""
' Text für Outlook_beenden.txt: "Achtung: Outlook wird in 60 Sekunden beendet. Bitte alle offene Mail´s speichern."
Dim Start
Start = Timer
Do until Start + Seconds = timer
Loop
End Function
Dim oWMI, sQuery, Proz, Task
On Error Resume Next
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate,(debug)}")
sQuery = "select * from win32_process where name = '" & "notepad.exe" & "'"
Set Task = oWMI.ExecQuery(sQuery)
For Each Proz In Task
Proz.Terminate 0
Next
Dim oWMI2, sQuery2, Proz2, Task2
On Error Resume Next
Set oWMI2 = GetObject("winmgmts:{impersonationLevel=impersonate,(debug)}")
sQuery2 = "select * from win32_process where name = '" & "OUTLOOK.EXE" & "'"
Set Task2 = oWMI.ExecQuery(sQuery2)
For Each Proz2 In Task2
Proz2.Terminate 0
Next
Hat jemand einen Vorschlag für eine reine VB-Lösung ?
VB-Skript-Programmierung: Skript-Ablauf steuern
-
- Site Admin
- Posts: 4123
- Joined: 04 Oct 2004, 18:38
- Location: Thailand
- Contact:
Re: VB-Skript-Programmierung: Skript-Ablauf steuern
Haben Sie schon mal das mitgelieferte Skript "Outlook.vbs" getestet, mit welchem man Outlook "normal" beenden kann?