python兩種獲取剪貼簿內容的方法

hzcya發表於2020-11-11

第一種

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import win32clipboard
import time
#速度快 容易出錯
class niubi():
 def lihai(self):
  while True:
   #jianting().main()
   t = jianting().main()
   print(t)
 
class jianting():
 def clipboard_get(self):
  """獲取剪貼簿資料"""
  win32clipboard.OpenClipboard()
  data = win32clipboard.GetClipboardData(win32clipboard.CF_UNICODETEXT)
  win32clipboard.CloseClipboard()
  return data
 
 def main(self):
  """後臺指令碼:每隔0.2秒,讀取剪下板文字,檢查有無指定字元或字串,如果有則執行替換"""
  # recent_txt 存放最近一次剪下板文字,初始化值只多執行一次paste函式讀取和替換
  recent_txt = self.clipboard_get()
  while True:
   # txt 存放當前剪下板文字
   txt = self.clipboard_get()
   # 剪下板內容和上一次對比如有變動,再進行內容判斷,判斷後如果發現有指定字元在其中的話,再執行替換
   if txt != recent_txt:
    # print(f'txt:{txt}')
    recent_txt = txt # 沒查到要替換的子串,返回None
    return recent_txt
 
   # 檢測間隔(延遲0.2秒)
   time.sleep(0.2)
 
if __name__ == '__main__':
 niubi().lihai()

速度快,但很容易出錯, 一般人感覺不出來速度。 不建議使用。

方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import pyperclip
import time
 
#穩定不出錯
class niubi():
 def lihai(self):
  while True:
   #jianting().main()
   t = jianting().main()
   print(t)
class jianting():
 def clipboard_get(self):
  """獲取剪貼簿資料"""
  data = pyperclip.paste() #主要這裡差別
  return data
 
 def main(self):
  """後臺指令碼:每隔0.2秒,讀取剪下板文字,檢查有無指定字元或字串,如果有則執行替換"""
  # recent_txt 存放最近一次剪下板文字,初始化值只多執行一次paste函式讀取和替換
  recent_txt = self.clipboard_get()
  while True:
   # txt 存放當前剪下板文字
   txt = self.clipboard_get()
   # 剪下板內容和上一次對比如有變動,再進行內容判斷,判斷後如果發現有指定字元在其中的話,再執行替換
   if txt != recent_txt:
    # print(f'txt:{txt}')
    recent_txt = txt # 沒查到要替換的子串,返回None
    return recent_txt
 
   # 檢測間隔(延遲0.2秒)
   time.sleep(0.2)
 
if __name__ == '__main__':
 niubi().lihai()

我一般把第二種 用在程式中。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978904/viewspace-2733644/,如需轉載,請註明出處,否則將追究法律責任。

相關文章