Advertisement
Guest User

Untitled

a guest
Feb 12th, 2016
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.51 KB | None | 0 0
  1.  
  2. import os, win32gui, win32ui, win32con, win32api
  3. from PIL import Image, ImageChops, ImageTk
  4. import Tkinter
  5. from threading import Timer
  6.  
  7. class qqDiffCrack:
  8.     widthWindow = 510
  9.     heightWindow = 495
  10.     leftImage0 = 577
  11.     leftImage1 = 970
  12.     topImage0 = topImage1 = 187
  13.     widthImage0 = widthImage1 = 409
  14.     heightImage0 = heightImage1 = 286
  15.     interval = 3.0
  16.  
  17.     def __init__(self):
  18.         self.root = root = Tkinter.Tk()
  19.         self.photo = ImageTk.PhotoImage(self.qqDiffCrackCore())
  20.         self.label = Tkinter.Label(root, image=self.photo)
  21.         self.label.image = self.photo
  22.         self.label.place(x=5,y=5)
  23.         self.button = Tkinter.Button(root, text="Update", command=self.updateImage)
  24.         self.button.place(x=5,y=460)
  25.         self.button = Tkinter.Button(root, text="Start Auto Update", command=self.startAutoUpdate)
  26.         self.button.place(x=120,y=460)
  27.         #self.button = Tkinter.Button(root, text="Stop Auto Update", command=self.stopAutoUpdate)
  28.         #self.button.place(x=240,y=460)
  29.         self.removeTmpFiles()
  30.                        
  31.     def MainLoop(self):
  32.         self.root.minsize(self.widthWindow,self.heightWindow)
  33.         self.root.maxsize(self.widthWindow,self.heightWindow)
  34.         self.root.mainloop()
  35.    
  36.     def updateImage(self):
  37.         self.photo = ImageTk.PhotoImage(self.qqDiffCrackCore())
  38.         self.label = Tkinter.Label(self.root, image=self.photo)
  39.         self.label.image = self.photo
  40.         self.label.place(x=5,y=5)
  41.         self.removeTmpFiles()
  42.  
  43.     def stopAutoUpdate(self):
  44.         if self.__dict__.has_key("__timer"):
  45.             self.__timer.cancel()
  46.             del self.__timer
  47.    
  48.     def startAutoUpdate(self):
  49.         self.stopAutoUpdate()
  50.         self.__timer = Timer(self.interval, self.runAutoUpdate)
  51.         self.__timer.start()
  52.        
  53.     def restartAutoUpdate(self):
  54.         self.startAutoUpdate()
  55.    
  56.     def runAutoUpdate(self):
  57.         self.updateImage()
  58.         self.restartAutoUpdate()
  59.  
  60.     def removeTmpFiles(self):
  61.         for rootdir, dirs, files in os.walk(".\\tmp\\", topdown=False):
  62.             for name in files:
  63.                 os.remove(os.path.join(rootdir, name))
  64.    
  65.     def getImage(self, left, top, width, height):
  66.         hwnd = 0
  67.         dc = win32gui.GetWindowDC(hwnd)
  68.         mfcDC=win32ui.CreateDCFromHandle(dc)
  69.         saveDC=mfcDC.CreateCompatibleDC()
  70.         saveBitMap = win32ui.CreateBitmap()
  71.         saveBitMap.CreateCompatibleBitmap(mfcDC, width, height)
  72.         saveDC.SelectObject(saveBitMap)
  73.         saveDC.BitBlt((0,0), (width,height), mfcDC, (left,top), win32con.SRCCOPY)
  74.         if not os.path.isdir('.\\tmp'):
  75.             os.mkdir(".\\tmp")
  76.         bmpname=win32api.GetTempFileName(".\\tmp\\","")[0]+'.bmp'
  77.         saveBitMap.SaveBitmapFile(saveDC, bmpname)
  78.         return bmpname
  79.    
  80.     def qqDiffCrackCore(self):
  81.         img0 = Image.open(self.getImage(self.leftImage0,self.topImage0,self.widthImage0,self.heightImage0))
  82.         img1 = Image.open(self.getImage(self.leftImage1,self.topImage1,self.widthImage1,self.heightImage1))
  83.         diffImage = ImageChops.difference(img0,img1)
  84.         for x in range(self.widthImage0):
  85.             for y in range(self.heightImage0):
  86.                 if diffImage.getpixel((x,y)) == (0,0,0):
  87.                     diffImage.putpixel((x,y), (255,0,0))
  88.                 else:
  89.                     diffImage.putpixel((x,y), (0,255,0))
  90.         return diffImage
  91.  
  92. if __name__=="__main__":
  93.     game = qqDiffCrack()
  94.     game.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement