Notice: This forum has been recovered from an old backup, so some content, links, and dates may be outdated. The forum is currently read-only while we restore sign-in and registration functionality. Details

If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.

Programme beenden

Allgemeines zum Thema EventGhost
Post Reply
Eggert
Posts: 14
Joined: Wed Nov 15, 2006 9:06 am

Programme beenden

Post by Eggert »

Hallo,

kann Eventghost auch Programme richtig beenden?
Am liebsten nat├╝rlich so, als w├╝rde man das Programm auf konventionelle Art beenden und nicht "killen"

Oder gibt es andere Software daf├╝r, die man mit EventGhost kombinieren kann?
Das wäre spitzenmässig!

Eggert
Bartman
Plugin Developer
Posts: 881
Joined: Sun Feb 12, 2006 9:03 am

Post by Bartman »

macht es doch mit dem Close befehl. Da wird der Anwendung nur gesagt, dass sie sich doch beenden soll. Abgest├╝rzte Anwendungen reagieren da schon gar nicht mehr drauf.
Ich wüßte so gar nicht, dass man mit EG ohne Zusatzskripte oder Aufrufe von z.B. taskkill Programme hart abschießen kann.
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Ja, der normale Weg ist ein Fenster/FindeFenster und dann ein Fenster/Schließe Befehl.
Wenn das Programm gar nicht reagiert, dann hilft nur TASKKILL.EXE weiter, dass aber leider bei der "Home Edition" von Windows XP nicht dabei ist.
Wäre vielleicht mal eine Idee dessen Funktionalität in einen EG-Befehl zu packen. Müsste mit win32api.TerminateProcess gehen.
Bartman
Plugin Developer
Posts: 881
Joined: Sun Feb 12, 2006 9:03 am

Post by Bartman »

Ich hab noch das Script um nicht reagierende Programme bei Bedarf abzuschießen. Hauptsächlich brauche ich das für Zoom Player. In der Beispielkonfiguration ist ja auch ein ZP abschießen drin ;)
Wobei das IsHungAppWindow laut Doku evtl. noch verändert wird. Alternativ kann man auch wohl schauen, ob die Anwendung ein SendMessage annimmt.

Code: Select all

import win32api
import win32con
from win32process import GetWindowThreadProcessId
from win32gui import GetWindowText, SendMessageTimeout
import ctypes

for hwnd in eg.lastFoundWindows:
    try:
        killApp = ctypes.windll.user32.IsHungAppWindow(hwnd)
        #print killApp
        #err, result = SendMessageTimeout(hwnd, win32con.WM_COMMAND, 0, 0, win32con.SMTO_ABORTIFHUNG | win32con.SMTO_NOTIMEOUTIFNOTHUNG, 500)
        #, err
    except:
        killApp = True
    if killApp:
        thread, pid = GetWindowThreadProcessId(hwnd)
        print "killing", GetWindowText(hwnd), "PID:", pid
        handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, False, pid)
        win32api.TerminateProcess(handle, -1)
        win32api.CloseHandle(handle)
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Ja, sowas in der Art wird es wohl werden.
Im Gegensatz zu dem Fenster/Schließe ist das ja aber mehr auf Programme bezogen als auf Fenster bezogen. Fenster/Schließe kann ja auch ein einzelnes Fenster schließen, ohne die Applikation zu beenden. Sollte also wohl eher unter die System-Gruppe fallen und eine Auswahl nach .exe haben, statt nach Fenstern.
Post Reply