0

Python 2.7 で 2 つのイベント間の時間を測定する Windows 用の非常に単純なツールをコーディングしました。具体的には:

  1. 参照したいピクセルをマウスでポイントし、「左コントロール」キーを押します
  2. タイマーを開始したいときに(どこでも)クリックします

コードは次のとおりです。

import pyHook, pythoncom
import win32api
import sys
import time
from ctypes import windll
#from PIL import ImageGrab # alternative solution to windll

class Timer:
    def __init__ (self):
        pass

    def Reset (self):
        self.t = time.clock ()

    def Stop (self):
        self.t = time.clock () - self.t

    def Get (self):
        return self.t

def GetPixelColor (x, y):
    dc = windll.user32.GetDC (0)
    return windll.gdi32.GetPixel(dc, x, y)

class Test:
    def __init__ (self):
        self.timer = Timer ()
        self.color = -1
        self.ready = False

    def OnKbEvent (self, e):
        if e.Key == "Lcontrol":
            self.x, self.y = win32api.GetCursorPos ()
            self.color = GetPixelColor (self.x, self.y)
            self.ready = True
            print ("Control point selected")
            print (self.color)

        return True

    def OnMouseEvent(self, e):
        if self.ready:
            if e.Message == 513: # mouse left down
                self.timer.Reset ()
                while self.color == GetPixelColor (self.x, self.y):
                    time.sleep (0.100)
                self.timer.Stop ()
                print "%.5f" % self.timer.Get ()
                sys.exit ()

        return True

t = Test ()
hm = pyHook.HookManager ()
hm.KeyDown = t.OnKbEvent
hm.MouseAllButtonsDown = t.OnMouseEvent
hm.HookKeyboard ()
hm.HookMouse ()

pythoncom.PumpMessages ()

スクリプトは機能しますが、私のマシン (Win7) では通常よりも 5 秒長くかかります。この間、すべてがフリーズしているように見えます。

私が間違っていることについてのヒント/スクリプトを改善するにはどうすればよいですか? ティア

4

0 に答える 0