※ 本文為 versitility.bbs. 轉寄自 ptt.cc 更新時間: 2014-07-09 07:12:26
看板 EZsoft
作者 標題 [問題] 如何用 batch 取得剪貼簿的內容
時間 Fri Apr 1 18:47:40 2011
※ [本文轉錄自 Windows 看板 #1DbQozf0 ]
看板 Windows
作者 標題 [問題] 如何用 batch 取得剪貼簿的內容
時間 Fri Apr 1 18:45:15 2011
(OS是XP)
這個問題困擾我蠻久了
我常常寫小程式來自動化一些任務
很多工作只需 batch (.bat) 即可完成
但唯有剪貼簿的操作要靠其他程式語言或外部程式
例如...
1. 用vbs清空剪貼簿
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.document.parentwindow.clipboardData.SetData "text", ""
objIE.Quit
2. 用 clip.exe 清空剪貼簿
%windir%\system32\cmd.exe /c "echo off | clip"
3. 用 python 清空剪貼簿
import ctypes
#Get required functions, strcpy..
strcpy = ctypes.cdll.msvcrt.strcpy
ocb = ctypes.windll.user32.OpenClipboard #Basic Clipboard functions
ecb = ctypes.windll.user32.EmptyClipboard
gcd = ctypes.windll.user32.GetClipboardData
scd = ctypes.windll.user32.SetClipboardData
ccb = ctypes.windll.user32.CloseClipboard
ga = ctypes.windll.kernel32.GlobalAlloc # Global Memory allocation
gl = ctypes.windll.kernel32.GlobalLock # Global Memory Locking
gul = ctypes.windll.kernel32.GlobalUnlock
GMEM_DDESHARE = 0x2000
def Get( ):
ocb(None) # Open Clip, Default task
pcontents = gcd(1) # 1 means CF_TEXT.. too lazy to get the token thingy ...
data = ctypes.c_char_p(pcontents).value
#gul(pcontents) ?
ccb()
return data
def Paste(data):
ocb(None) # Open Clip, Default task
ecb()
hCd = ga( GMEM_DDESHARE, len( bytes(data,"ascii") )+1 )
pchData = gl(hCd)
strcpy(ctypes.c_char_p(pchData),bytes(data,"ascii"))
gul(hCd)
scd(1,hCd)
ccb()
ocb(None)
ecb()
想請問的是
在不使用外部程式(clip, nircmd, ...)或其他程式語言(vb, c/c++, ...)的情況下
該如何利用 batch 取得及設定剪貼簿的文字內容?
查了幾個小時依然一無所獲...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.46
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.46
→ :vbs 對你來說不算是 batch 嗎?1F 04/01 18:54
vbs 當然也是 shell scripting language
但不是文中的提到檔名以 .bat 結尾的 DOS batch (簡稱 batch)
http://en.wikipedia.org/wiki/Batch_file
Batch file - Wikipedia, the free encyclopedia
In DOS, OS/2, and also Microsoft Windows, batch file is the name given to a type of script file, a text file containing a series of commands to be executed by the command interpreter. ...
In DOS, OS/2, and also Microsoft Windows, batch file is the name given to a type of script file, a text file containing a series of commands to be executed by the command interpreter. ...
→ :以及為何不打算使用Window內建的 Dos 工具 Clip 就好2F 04/01 19:01
→ :sorry, Clip.exe 似乎不是內建的 @@"
→ :純 DOS 時代有 Clipboard 嗎?
→ :修正我第三句推文 Clip.exe 內建在 server 2k3, Vista, 7
→ :sorry, Clip.exe 似乎不是內建的 @@"
→ :純 DOS 時代有 Clipboard 嗎?
→ :修正我第三句推文 Clip.exe 內建在 server 2k3, Vista, 7
→ :嗯嗯 但我還不想跳到win7 因為這樣一堆程式要改寫@@6F 04/01 20:07
→ :像是autohotkey腳本之類的全部都要檢查 頗麻煩
→ :像是autohotkey腳本之類的全部都要檢查 頗麻煩
→ :不用跳,直接去抓 clip.exe 回來用就可以了8F 04/01 21:09
→ :AHK 不是直接可以針對 clipboard 操作嗎?9F 04/01 21:20
嗯嗯 不只 AHK 你想的到的多數程式語言都可以操作剪貼簿
不過我的問題不在於哪些語言可以操作剪貼簿
偶爾會碰到一種情況是
有些任務我覺得用 batch 比較好寫
但我不知道怎麼用 batch 操作剪貼簿
所以必須另外用別的語言/軟體處理剪貼簿內容
再把 output 傳給 batch
(事實上我現在就是這樣做)
若可以直接用 batch 處理剪貼簿
就可以省下中間這個 glue 的步驟
→ :可是batch不就是這麼用的嗎 你看精美的un*x shell10F 04/02 09:03
→ :連cd/ls都是外部指令 然後所有的事都是pipe串來串去XD
→ :不然windows嘛 去裝powershell好了(逃
→ :連cd/ls都是外部指令 然後所有的事都是pipe串來串去XD
→ :不然windows嘛 去裝powershell好了(逃
推 :我不覺得batch有方便到哪裡耶. 你要的任務 AHK 只要一行13F 04/02 09:50
→ :clipboard := 這樣就好10多個字元即可,還有py怎麼這麼瑣碎
→ :論啟動效率、程式簡潔性 (不會跳出一堆畫面) AHK 都是上選
→ :同 guesd 說的 batch 本身只是命令呼叫的集合體
→ :你所謂的不依靠外部程式, 本質上是不成立的. 除非你指的是
→ :cmd 本身提供的指令. 那很抱歉 cmd 就是沒有提供剪貼簿操作
→ :如果真的很堅持 batch 你可以自己寫一個 cmd.exe
→ :clipboard := 這樣就好10多個字元即可,還有py怎麼這麼瑣碎
→ :論啟動效率、程式簡潔性 (不會跳出一堆畫面) AHK 都是上選
→ :同 guesd 說的 batch 本身只是命令呼叫的集合體
→ :你所謂的不依靠外部程式, 本質上是不成立的. 除非你指的是
→ :cmd 本身提供的指令. 那很抱歉 cmd 就是沒有提供剪貼簿操作
→ :如果真的很堅持 batch 你可以自己寫一個 cmd.exe
感謝您的回應
然後回答您的幾個問題:
1. 我現在就是用外部程式/其他語言處理後把 output 給 batch
(上面已經提過 不過好像被忽略了)
2. python 那段只是舉例
如果安裝某些套件
寫法也可以跟 ahk 一樣簡潔
速度也不是問題(用了某些套件速度可以更快, ex: psyco)
3. 本文只是想知道有沒有辦法單用 DOS batch 操作剪貼簿而已
如果真的不行的話當然就還是用我原本的方法了
※ 編輯: Holocaust123 來自: 140.112.30.46 (04/02 11:00)
推 :XP 內建 system32\clipbrd.exe 可是好像純 GUI 沒 cmd line..20F 04/03 03:40
--
※ 看板: virsey 文章推薦值: 0 目前人氣: 0 累積人氣: 849
作者 Holocaust123 的最新發文:
- 有沒有什麼歌曲 雖然比較少看到討論(ex:冷門or舊番) 但卻是好聽又熱血的? 無意間聽到的時候就好像發現寶藏一樣高興啊 爬文看到#1E34cRSs有類似的問題 不過他問的是BGM 我想問的則是有人演 …54F 40推
- 無意間逛到的部落格 我還沒弄清楚他怎麼做的 總之就是可以幫鍵盤鋪上自訂的圖案 稍微挑了幾張圖: K-ON!輕音部的主角們 realforce 89上的小唯跟梓喵祝你聖誕快樂 貴到爆炸的happy h …28F 12推
- 看板 EZsoft作者 Holocaust123 (一步一腳印)標題 從Mipony轉FreeRapid心得時間 Sun Jul 3 02:11:28 2011 市面上免空下載器非常多 沒有破百 …15F 5推
- (OS是XP) 這個問題困擾我蠻久了 我常常寫小程式來自動化一些任務 很多工作只需 batch (.bat) 即可完成 但唯有剪貼簿的操作要靠其他程式語言或外部程式 例如... 1. 用vbs清空剪貼 …20F 2推
→
guest
回列表(←)
分享