garciam
Goto Top

Programm beenden

Hallo zusammen

Ich habe ein Problem, bei dem ich nicht weiterkomme...

Ich muss ein Programm zu einer bestimmten Zeit schliessen lassen. Dafür will ich ein Script per Aufgabenplanung täglich ausführen lassen. Versucht habe ich es mit Powershell:

get-process prowin32 | %{ $_.closemainwindow() }
Get-Process prowin32 | Stop-Process
Get-Process prowin32 | Kill

Die Varianten funktionieren grundsätzlich alle, jedoch wird bei stop-process und kill der Benutzer gesperrt. Bei closewindow steht leider die Abbrechen-Box im Weg. Ich kann also nicht einfach den Prozess abschiessen oder das Fenster schliessen, ich müsst den "Abbrechen" Button per Script betätigen können. Geht das und wie stellt man das am besten an?

ecee300cb35afb8c7e17cef0abe58de9

Vielen Dank für eure Hilfe!

Gruss

Content-Key: 242896

Url: https://administrator.de/contentid/242896

Printed on: April 20, 2024 at 00:04 o'clock

Member: Alex-123
Alex-123 Jul 07, 2014 at 14:03:06 (UTC)
Goto Top
Hi garciam,

hab da mal ein kleines VBScript gebastelt.

Ich nehme an das zu beendende Programm heisst PROWIN32.EXE ???

Ich hoffe ich konnte dir weiterhelfen.

Bei Fragen immer her damit ;)

VG Alex

Set oWsh = CreateObject("WScript.Shell")   
	oWsh.Run("cmd.exe /c " & chr(34) & "taskkill /f /im prowin32.exe" & chr(34))  

msgbox"Das geöffnete Programm wurden beendet!",vbCritical,"Programm beenden"	  
Member: garciam
garciam Jul 07, 2014 updated at 14:10:38 (UTC)
Goto Top
Hallo Alex

Danke für deinen Vorschlag, aber dein VBScript killt den Prozess und somit wird der User gesperrt. Das Programm müsste über "Abbrechen" beendet werden können.

Gruss
garciam
Member: colinardo
Solution colinardo Jul 07, 2014, updated at Jul 08, 2014 at 11:49:05 (UTC)
Goto Top
Moin,
wenn das Ding so besch... programmiert ist dann wirst du wohl über Sendkeys gehen müssen um den Abbrechen Button zu betätigen (dazu muss aber jemand angemeldet sein wenn das Script läuft)
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic")  
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")  
get-process prowin32 | %{
$_.closemainwindow()
# Fenster in den Fokus bringen
[Microsoft.VisualBasic.Interaction]::AppActivate($_.Id)
# 0,5 Sekunden pausieren das das Fenster in den Vordergrund kommen kann
sleep -milliseconds 500
# ALT-C drücken um den Abbrechen-Button zu betätigen
[System.Windows.Forms.SendKeys]::SendWait('%c')  
}
Wenn das nicht hinhaut nehme AutoIT dafür.

Grüße Uwe
Member: garciam
garciam Jul 08, 2014 updated at 12:47:29 (UTC)
Goto Top
Hallo Colinardo

Dein Script funktionierte leider nicht, aber mit AutoIT hab ich es hinbekommen. Danke für den super Tipp.

CloseScanImport()

Func CloseScanImport()

    ; Wait 10 seconds for the window to appear.
    Local $hWnd = WinWait("[CLASS:ProFrame]", "", 10)  

    ; Send a mouse click to the edit control of ScanImport using the handle returned by WinWait.
    ControlClick($hWnd, "", "Button1")  

    ; Wait for 2 seconds.
    Sleep(2000)

    ; Close the ScanImport window using the handle returned by WinWait.
    WinClose($hWnd)
EndFunc   ;==>CloseScanImport

Gruss
garciam