2014-06-23 15 views
8

Sono in grado di visualizzare i processi che si svolgono su un computer remoto sulla mia rete utilizzando il modulo wmi. Questo è un esempio che utilizza wmi per monitorare i processi creati ed eliminati sul mio PC.Come monitorare la finestra attiva su un PC remoto

import wmi, multiprocessing 

def create(): 
    while True: 
     crePro = cp() 
     print('Creation',crePro.Caption,crePro.ProcessId,crePro.CreationDate) 


def delete(): 
    while True: 
     delPro = dp() 
     print('Deletion',delPro.Caption,delPro.ProcessId,delPro.CreationDate) 


c = wmi.WMI() 
cp = c.Win32_Process.watch_for("creation") 
dp = c.Win32_Process.watch_for("deletion") 


if __name__ == '__main__': 
    createProc = multiprocessing.Process(target = create) 
    deleteProc = multiprocessing.Process(target = delete) 

    createProc.start() 
    deleteProc.start() 

Ho anche letto su come utilizzare win32gui per ottenere la finestra attiva.

import win32gui 
win32gui.GetForegroundWindow() 

e ho letto circa l'esistenza di WM_SETFOCUS e WM_ACTIVE in win32con, ma io non sono certo come collegare a questi flussi su un PC remoto.

La mia domanda è: Come posso monitorare la finestra attiva di un PC remoto (suppongo utilizzando WM_SETFOCUS o WM_ACTIVE)

+0

possibile duplicato di [finestra attiva di evento wmi/finestra di messa a fuoco] (http://stackoverflow.com/questions/11472216/wmi-event-active-window-focus-window) – rogerdpack

risposta

1

per ottenere la finestra attiva si può fare questo:

from win32gui import GetWindowText, GetForegroundWindow 
active_window = GetWindowText(GetForegroundWindow()) 

ma questo non ti invierà un segnale ogni volta che cambia la finestra attiva. Puoi leggerlo di tanto in tanto e vedere se la finestra active_window è cambiata.

Problemi correlati