2009-07-04 7 views
1

Ich versuche ein Zeitmanagement-Tool mit wxPython zu schreiben, das im Idealfall nicht aufdringlich und sehr weit entfernt ist. Die App kann bisher normal verwendet und für die Dauer ihrer Nutzung auf die Systemablage minimiert werden.wxPython - Trapping von Maus- und Tastaturereignissen ohne Fenster Fokus

Ich stelle jedoch fest, dass, sobald der Rahmen nicht im Fokus ist, wie es ist, wenn seine 'Iconized', die Maus und Tastatur Trapping, die normalerweise funktioniert, wenn der Rahmen/App im Fokus ist nicht mehr funktioniert.

Ich bin mir bewusst, dass ich ein C++ Programm schreiben könnte einen Message Queue-Haken und Trap aller Maus- und Tastaturereignisse auf OS-Ebene, aber Id lieber nicht aufrollen Ärmel dass weit zu schaffen. Nachdem alle meine Hände zu vermeiden, versuchen immer dass schmutzig ist, warum ich die UI in wxPython in erster Linie schreibe :)

Antwort

3

Haben Sie wirklich brauchen, Maus- und Tastaturereignisse oder würde es ausreichen, wissen nur, wenn der Benutzer war untätig? (Sie erwähnten eine Zeitmanagement-App, das scheint also machbar.)

Dieser Code funktioniert unter Windows und gibt die Leerlaufzeit in Sekunden zurück.

from ctypes import Structure, windll, c_uint, sizeof, byref 

class LASTINPUTINFO(Structure): 
    _fields_ = [ 
     ('cbSize', c_uint), 
     ('dwTime', c_uint), 
    ] 

def get_idle_duration(): 
    lastInputInfo = LASTINPUTINFO() 
    lastInputInfo.cbSize = sizeof(lastInputInfo) 
    windll.user32.GetLastInputInfo(byref(lastInputInfo)) 
    millis = windll.kernel32.GetTickCount() - lastInputInfo.dwTime 
    return millis/1000.0 
+0

Heilige Kuh. Ja, ich nehme an, du hast Recht (Faceplant). Es gab eine Fantasie über das Zerlegen der Tastatur- und Mauszeit des Benutzers, aber ich nehme an, dass das einer dieser wirklich wirklich nachdenklichen und unnötigen Artdinge sein könnte. Vielen Dank dafür. –

+0

Auch .. ist das wie Sie C und Python kombinieren? Ist es so einfach? –

+0

ctypes und pywin32 bieten Zugriff auf Windows-APIs. Sie können Ihren eigenen C-Code auch in eine Python-App integrieren, aber das ist anders. – FogleBird

Verwandte Themen