Datei mit VB-Skript beenden
Hallo zusammen!
Keine Ahnung ob ich hier richtig bin!
Ist es möglich mittels VB-Skript eine Datei zu beenden (ein Programm zu schließen)? Ist eine Access-Datenbank!
Wenn ja, wie sieht der code aus? Wshell. ???
Danke im voraus!
Keine Ahnung ob ich hier richtig bin!
Ist es möglich mittels VB-Skript eine Datei zu beenden (ein Programm zu schließen)? Ist eine Access-Datenbank!
Wenn ja, wie sieht der code aus? Wshell. ???
Danke im voraus!
Please also mark the comments that contributed to the solution of the article
Content-Key: 75071
Url: https://administrator.de/contentid/75071
Printed on: April 19, 2024 at 09:04 o'clock
5 Comments
Latest comment
Also ein Programm killst du mit VBScript + WMI.
Also so:
Also so:
Prog = "notepad.exe" 'Hier Name des Prozess eingeben.
Set wmi = GetObject("winmgmts:")
Set System = wmi.instancesOf("win32_process")
For Each process in system
if lcase(process.name) = LCase(Prog) then
process.Terminate (0)
End If
Next
Hallo edvmaedchenfueralles!
Da sind für mich einige Fragen offen:
Für den einfachsten Fall, nämlich "beende über die Taskliste alle Access-Instanzen" würde der Code etwa so aussehen:
Wenn der Name der ".mdb"-Datei in der Commandline aufscheint, dann so:
In beiden Fällen bitte die durchgängige Großschreibung der Suchbegriffe beachten (oder auch dafür ein UCase() verwenden).
Grüße
bastla
[Edit] @48558: Als ich angefangen hab', stand Dein Kommentar noch nicht da - aber mein zwischenzeitliches Telefonat war anscheinend ganz schön lang ... [/Edit]
Da sind für mich einige Fragen offen:
- Was verstehst Du unter "beenden"? Wenn damit gemeint ist, einen Task zu "killen", gleich die Zusatzfrage:
- Ist es sinnvoll, eine Datenbank- (nennen wir Access mal so) Datei "gewaltsam" zu beenden? Wenn Du das tatsächlich willst:
- Ist darauf zu achten, ob mehrere Instanzen von Access laufen? Wenn ja:
- Wie sind diese zu unterscheiden? Um den Namen der ".mdb"-Datei auslesen zu können, müsste diese aus dem Dateisystem (Doppelklick im Explorer) oder per Commandline geöffnet worden sein. Alternativ wäre noch eine Reihung nach dem Startzeitpunkt der einzelnen Access-Instanzen möglich.
Für den einfachsten Fall, nämlich "beende über die Taskliste alle Access-Instanzen" würde der Code etwa so aussehen:
strProcName = "MSACCESS.EXE"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process",,48)
For Each objItem in colItems
If UCase(objItem.Name) = strProcName Then objItem.Terminate
Next
strProcCmd = "TEST.MDB"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process",,48)
For Each objItem in colItems
If Instr(UCase(objItem.CommandLine), strProcCmd) > 0 Then objItem.Terminate
Next
Grüße
bastla
[Edit] @48558: Als ich angefangen hab', stand Dein Kommentar noch nicht da - aber mein zwischenzeitliches Telefonat war anscheinend ganz schön lang ... [/Edit]