[VBScript]Zamkniecie "najnowszego" PID z Excel.exe


(G@jowy) #1

Witam,

probuje zamknac jeden z procesow excela (ten ktory ma wyzszy PID) - otwarte sa dwa excel-sheety i ten “nowszy” (z wyzsza PID) ma zostac zamkniety.

Jak narazie zamykam wszystkie excel procesy…

Prosze o pomoc.

Dim objWMI, oSammlung

Dim strFolder, Proz, Frage, Antwort

Dim z, y


' -----------------------------------------------------------------------------------------------------------------------------




    Proz = "excel.exe"


    Set objWMI = GetObject("WinMgmts:\\.")


    Set oSammlung = objWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & Proz & "'")

    for each item in oSammlung

	' Wscript.echo item.Handle

          item.Terminate()

    next

wscript.quit

(Pablo_Wawa) #2

Zamykasz wszystkie te procesy, bo w pętli For Each niczego nie sprawdzasz i zamykasz każdy proces.

Musisz w tej pętli porównywać PID każdego takiego procesu i zapamiętywać taki, który ma najwyższy, a potem na końcu (po pętli) go zamykać.

P.S. Pamiętaj, że Excel zazwyczaj otwiera pliki w jednym procesie (no chyba, że nowsze Excele już nie) lub mu się tak ustawi (wyłączy DDE to już w osobnych), więc być może zabijasz i tak jeden proces.