2009-07-04 12 views
1

wxPythonを使って時間管理ツールを作成しようとしていますが、それは理想的な方法です。これまでのアプリは、通常使用され、使用中はシステムトレイに最小化されます。wxPython - ウィンドウなしのマウスイベントとキーボードイベントをトラップする

しかし、いったんフレームにフォーカスがないと、「アイコン化」されているように、フレーム/アプリケーションがフォーカスされているときに正常に動作するマウスとキーボードのトラッピングは機能しなくなります。

Message Queue Hookを作成し、すべてのマウスとキーボードのイベントをOSレベルでトラップするためのC++プログラムを書くことができますが、IDはであり、それはです。結局のところ私の手を得ることを避けようとしているが汚いのはなぜですか?私はwxPythonのUIを最初に書いています:)

答えて

3

本当にマウスとキーボードのイベントが必要ですか?アイドル状態ですか? (あなたは時間管理アプリケーションを言いましたので、これは実現可能です)。

このコードはWindowsで動作し、アイドル時間を秒単位で返します。

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

聖なる牛。はい、私はあなたが正しいと思う(faceplant)。 キーボードの時間とマウスの時間を壊すことについての幻想がありましたが、それは本当に本当に本当に後の思考と不必要なタイプのものの1つかもしれないと思います。 ありがとうございます。 –

+0

また、これはCとPythonをどのように組み合わせたのでしょうか?これは簡単ですか? –

+0

ctypesとpywin32はWindows APIへのアクセスを提供します。独自のCコードをPythonアプリケーションに統合することもできますが、それは異なっています。 – FogleBird

関連する問題