有時候寫指令碼的時候會有作業系統剪下板的需求,就是
獲取剪下板中的字串
清空剪下板
向剪下板中寫入字串
方法包括使用 tkinter , ctypes 這兩個 python 標準庫, 或者安裝 qt 等第三方庫來操作剪下板。
ctypes 操作剪下板
先寫 windows 系統下 ctypes 庫如何操作剪下板吧。ctypes 這個庫主要用於呼叫動態鏈結函式或共享庫,使用起來比較難。
操作剪下板:讀取剪下板的字串;清空剪下板;向剪下板中寫入字串(只能寫入 ascii 字元)。
win10, python3,
from ctypes import *
user32 = windll.user32
kernel32 = windll.kernel32
def get_clipboard():
user32.openclipboard(c_int(0))
contents = c_char_p(user32.getclipboarddata(c_int(1))).value
user32.closeclipboard()
return contents
def empty_clipboard():
user32.openclipboard(c_int(0))
user32.emptyclipboard()
user32.closeclipboard()
def set_clipboard(data):
user32.openclipboard(c_int(0))
user32.emptyclipboard()
alloc = kernel32.globalalloc(0x2000, len(bytes(data, encoding='utf_8'))+1)
# alloc = kernel32.globalalloc(0x2000, len(data)+1)
lock = kernel32.globallock(alloc)
cdll.msvcrt.strcpy(c_char_p(lock),bytes(data, encoding='utf_8'))
# cdll.msvcrt.strcpy(c_char_p(lock), data)
kernel32.globalunlock(alloc)
user32.setclipboarddata(c_int(1),alloc)
user32.closeclipboard()
呼叫 get_clipboard() 獲取剪下板資料
if __name__ == '__main__':
# 獲取剪下板內字串
text_raw = get_clipboard()
print(' '.format(text_raw, type(text_raw)))
try:
text_str = text_raw.decode('utf_8')
print(' '.format(text_str, type(text_str)))
except:
print('剪下板為空。')
剪下板為空時,輸出結果為:
none
剪下板為空。
複製乙個字串後執行上面的測試**(在這裡我複製了 python ),輸出結果為:
b'python'
python
剪下板中無資料時,get_clipboard() 返回 none。
當剪下板中有資料時,get_clipboard() 將其以 bytes 格式返回;
使用 text_str = text_raw.decode('utf_8')將 bytes 轉化為 str。
呼叫 empty_clipboard() 清空剪下板
if __name__ == '__main__':
# 清空剪下板
empty_clipboard()
text = get_clipboard()
print(text)
複製乙個字串後執行**,輸出結果為:
none
呼叫 set_clipboard() 寫入剪下板
if __name__ == '__main__':
# 向剪下板內寫入 ascii 字串
set_clipboard('py!')
text = get_clipboard()
print(text)
輸出結果為:
b'py!'
相關完整**在 github 上。
操作剪貼簿
剪貼簿 一 將資料送到剪貼簿 1 記憶體配置 hglobal hglobal hglobal globalalloc ghnd gmem share,lstrlen ptext 1 sizeof tchar 為什麼不用malloc 在windows中執行的應用程式之間必須要共享剪貼簿所儲存的記憶體塊...
VC 剪貼簿操作
本文主要介紹了 vc mfc 中如下內容的剪貼簿操作 1 文字內容的操作2 wmf資料的操作 3 點陣圖的操作 4 設定使用自定義格式 5 感知剪貼簿內容的改變 6 自動將資料貼上到另一應用程式視窗 一 文字內容的操作 下面的 示範了如何將文字內容複製到剪貼簿 unicode 編碼的先轉化為 asc...
Visual C 剪貼簿操作
visual c 剪貼簿操作 2008 07 30 15 01 visual c 剪貼簿操作 文章摘要 1 文字內容的操作 2 wmf資料的操作 3 點陣圖的操作 4 設定使用自定義格式 5 感知剪貼簿內容的改變 6 自動將資料貼上到另一應用程式視窗 一 如何將文字內容複製到剪貼簿 cstring ...