Gå til innhold

vbs - behandling av prosesser i prosesslista


Anbefalte innlegg

set service = GetObject ("winmgmts:")
set shell = createobject("wscript.shell")
installert = 0
' Sjekker om programmene under kjører på maskinen.
for each Process in Service.InstancesOf ("Win32_Process")
	If Process.Name = "program1.exe" OR Process.Name = "program2.exe" OR Process.Name = "program3.exe" OR Process.Name = "program4.exe" then
			MsgBox("Du har installert whatnot på din maskin og det er nå kommet en oppdatering. For å unngå tap av data, må du LAGRE og LUKKE, én eller flere av følgende programmer, før du trykker OK eller lukker dette vinduet." & VbCrLf & VbCrLf & "Program1" & VbCrLf & "Program2" & VbCrLf & "Program3" & VbCrLf & "Program4")
			
						
			errTrap = shell.run("install_oracle.bat /y", 0 , True)
				'Sjekker om installasjonen gikk bra og setter flagg			
				if (errTrap = 0) or (errTrap = 3010) Then
					installert = 1
					MsgBox("Installasjonen av den nye klienten fullførte uten feil.")
				else 
					installert = 0
				End if
			Exit for
	End IF	
next

	'Sjekker om klienten er installert	
	if installert = 0 Then
		errTrap = shell.run("install_oracle.bat /y", 0 , True)
	End IF

'Skriver til eventlog
if (errTrap = 0) Or (errTrap = 3010) Then
	'WRITE EXIT CODE [0-success/3010-success&requires reboot] TO EVENTLOG
	shell.LogEvent vbLogSuccess, sLogHeader & "Installasjonen gikk superdupert." & VbCrLf & "Exit code: " & errTrap
Else shell.LogEvent vbLogError, sLogHeader & "Installasjonen gikk åt skogen." & VbCrLf & "Exit code: " & errTrap
	MsgBox("Noe gikk galt under installasjon av klienten - vennligst kontakt IT-avdelingen!")
End If

WScript.Quit

Hensikten med dette scriptet er altså å sjekke om noen av programmene som skal oppdateres er i bruk. Hvis så er, så må selvsagt brukeren lagre arbeidet og lukke disse - slik at man for det første sikrer at installasjonen går slik den skal og at brukeren ikke mister data.

 

Problemet er altså at scriptet mitt klistrer en meldingsboks med "OK", og om brukeren da klikker OK, uten å lagre og lukke - så går ting åt skogen. Det jeg altså ønsker er å forsikre meg om at brukeren faktisk HAR stengt ned de nevnte programmene, før vedkommende trykker OK. Per nå, så har jeg ingen slik kontroll, men bare stoler på at brukeren faktisk har gjort det.

 

Noen som har tips til en enkel måte å gjøre dette på? :)

Lenke til kommentar
Videoannonse
Annonse

Det funker ikke dessverre, fordi man ikke kan nøste løkker med test av samme variabel. Man får felmeldingen: invalid for loop control variable.

 

Jeg lukter nå på muligheten for å gjøre det med en do while og lage et flagg, som settes til gitte verdier, men det gjenstår å testes foreløpig. :)

Lenke til kommentar
Dim applicationsRunning = False
Dim processNames = Array("program1.exe", "program2.exe, "program3.exe)
Set service = GetObject ("winmgmts:")
while applicationsRunning

applicationsRunning = False
For Each Process In Service.InstancesOf ("Win32_Process")
If UBound(Filter(Process.Name.ToLower(), processNames)) > 0 Then
MsgBox("Du har installert whatnot på din maskin og det er nå kommet en oppdatering. For å unngå tap av data, må du LAGRE og LUKKE, én eller flere av følgende programmer, før du trykker OK eller lukker dette vinduet." & VbCrLf & Join(processNames, VbCrLf))
Exit For
End If
Next
Wend

etc.
Noe slikt kanskje? Endret av GeirGrusom
Lenke til kommentar

Jeg endte nå opp med følgende, og det ser ut til å gjøre jobben slik jeg hadde tenkt. Takk for engasjementet, Geir. :)

do
kjorer = 0
for each Process in Service.InstancesOf ("Win32_Process")
	
	If Process.Name = "program1" OR Process.Name = "program2" then
			MsgBox("Du har installert og har følgende program kjørende: " & process.name & " lagre og lukk posteringer før du trykker  OK eller lukker dette vinduet.")
			kjorer = 1							
		
	
	End IF	
next
loop until kjorer = 0
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...