Du bist nicht angemeldet.

highxvoltage1989

Registrierter Benutzer

  • »highxvoltage1989« ist der Autor dieses Themas

Beiträge: 2

Dabei seit: 23. August 2010

  • Private Nachricht senden

1

Montag, 23. August 2010, 12:45

Script um Prozesse (excel) zu beenden

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
'Zeit: WScript.Sleep 1000 * 60 * 3 'ms * secs per min * minutes
'---------------------------------------------------------------------------------------

'Überprüft ob EXCEL läuft:
'------------------------------------------
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'excel.exe'")


'Wenn EXCEL läuft, wird eine Info ausgeworfen und der Prozess wird dann nach 3 Minuten beendet:
'-------------------------------------------------------------------------------------------------

If colProcesses.Count = 1 Then

Dim Answer
Set WshShell = WScript.CreateObject("WScript.Shell")
Answer = WshShell.Popup("Excel wird in 3 Minuten beendet!", 3, "Info", 0 + 64)
WScript.Sleep 1000 * 60 * 3 'ms * secs per min * minutes

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

i=kill
Do while i=kill
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'excel.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
WScript.Sleep 1000 * 60 * 3 'ms * secs per min * minutes
Loop

'Wenn EXCEL nicht läuft, dann überprüfe in 5 Minuten wieder nach ob es läuft (=BEGINNE DIESES SCRIPT VON VORNE)
'-------------------------------------------------------------------------------------------------------------------

Else
Wscript.Sleep 1000 * 60 * 5 'ms * secs per min * minutes
end if

'Hier den Pfad Eingeben, wo dieses Script liegt.
'------------------------------------------------------------------------------------------------------

Return = WshShell.Run ("Pfad") 


Hey Leute,

ich wollte folgendes basteln, und zwar wird das Skript gestartet.
Nun soll es schaun, ob ein Excel-Prozess läuft...wenn ja, dann soll dieser nach 3 Minuten beenden werden.
Sollte in der Zwischenzeit ein weiterer Excel-Prozess auftauchen, soll dieser natürlich auch nach 3 Minuten beendet werden usw.
Habe jedoch das Problem, dass er mir sofort alle Excel-Prozesse abschießt.
Wenn kein Excel läuft, soll halt ständig überprüft werden, ob ein Excel-Prozess läuft oder nicht....
Das Skript funktioniert teilweise, seht ihr paar Fehler oder die Möglichkeit es einfacher zu gestalten?!

Folgender Fehler taucht auch unteranderem auf:
Objekt erforderlich "WshShell"

Danke und Gruß
Volti :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »highxvoltage1989« (25. August 2010, 08:08)


peterfido

Gelegenheitsprogger

  • »peterfido« ist männlich

Beiträge: 988

Dabei seit: 5. Januar 2007

Wohnort: Berlin

Hilfreich-Bewertungen: 37

  • Private Nachricht senden

2

Montag, 23. August 2010, 20:59

Der Sinn dahinter würde mich mal interessieren... Lösen lässt sich diese Aufgabe mit einem Excel AddIn, welches Excel nach 5 Minuten schließt..

highxvoltage1989

Registrierter Benutzer

  • »highxvoltage1989« ist der Autor dieses Themas

Beiträge: 2

Dabei seit: 23. August 2010

  • Private Nachricht senden

3

Dienstag, 24. August 2010, 09:11

Moin, lässt die Aufgabe sich den auch mit so einem Skript lösen? (PID? also Prozess ID um Excel-Prozesse zu unterscheiden?!)

Habe gerade auch nach AddIn's geschaut, jedoch nichts passendes gefunden, welches AddIn meinst du?

mfg ;)