首頁 > Lotus Notes軟件Lotus Notes的教程使用LotusScript債券設計 > Lotus Notes的腳本讀/寫Windows剪貼板

Lotus Notes的腳本讀/寫Windows剪貼板

如果你有一個需要讀取Windows剪貼板(或寫入),而在LotusScript中,這個自定義類很容易。 創建一個腳本庫,並調用Windows剪貼板。 進入腳本庫(聲明)區,並把這個類的定義。

首先,你需要聲明的API類,你將需要:

聲明私有函數GetClipboardData LIB“USER32”(BYVAL wFormat只要只要)
只要申報私人功能SetClipboardData LIB“USER32”(BYVAL只要,只要BYVAL HDATA wFormat)
只要申報私有函數OpenClipboard LIB“USER32”別名“OpenClipboard的”(BYVAL只要HWND)
只要申報私有函數CloseClipboard LIB“USER32”別名“CloseClipboard的”()
只要申報私有函數GlobalLock LIB“KERNEL32”別名“GlobalLock”的(只要BYVAL hMem)
只要申報私有函數GlobalUnlock LIB“KERNEL32”別名“GlobalUnlock”(只要BYVAL hMem)
只要申報私有函數的GlobalAlloc LIB“KERNEL32”(BYVAL只要,只要dwBytes BYVAL wFlags)
聲明私有函數GlobalFree LIB“KERNEL32”(BYVAL hMem只要只要)
只要申報私有函數EmptyClipboard LIB“USER32”()
聲明私有函數lstrcpyLP2Str LIB“KERNEL32”別名“lstrcpyA”(BYVAL lpString1作為字符串,_
只要BYVAL lpString2)只要
只要申報私有函數lstrlenLP LIB“KERNEL32”別名“lstrlenA”(BYVAL lpString只要)
申報私人小組MoveMemory LIB“KERNEL32”別名“RtlMoveMemory”(BYVAL strDest為已任,_
BYVAL lpSource為已任,因為任何BYVAL長度)
只要申報私有函數GetFocus LIB“USER32”別名“GetFocus”()

你還需要SOEM常量定義,所以添加的未來:

私人常量的CF_TEXT = 1
私人CONST GMEM_MOVABLE =&H2&
私人CONST GMEM_DDESHARE =​​&H2000&

最後,在類定義中添加。 首先,讓我們去了物業,將讀取剪貼板

類WindowsClipboard

公共財產的內容作為字符串
只要暗淡hClipboard
只要暗淡LpStrl
只要暗淡Resultl
作為字符串暗淡Clipboardstr

如果(OpenClipboard(0&)<> 0)
hClipboard = GetClipboardData的CF_TEXT
如果(hClipboard <> 0),然後
LpStrl = GlobalLock(hClipboard)
clipboardstr =空間$(lstrlenLP(LpStrl))
resultl = lstrcpyLP2Str(Clipboardstr,LpStrl)
GlobalUnlock(hClipboard)
其他
clipboardstr =“空”
結束如果
呼叫CloseClipboard()
其他
clipboardstr =“”
結束如果
- = Clipboardstr
高端物業的“結束”內容“屬性”GET“方法

類做的第一件事是獲得一個句柄到剪貼板。 然後剪貼板被鎖定。 一個臨時數據的空白區域,所以有一個足夠大的字符串數據塊保存結果。 剪貼板數據,空白區域,並放入剪貼板鎖定再次釋放它。 結果返回給用戶。

設置剪貼板的內容,使用相同的內容屬性,但此時該屬性設置的獲取,而不是。
公共財產作為字符串設置的內容
只要暗淡lSize
只要暗淡hMem
只要昏暗pMemory
昏暗的臨時為Variant

lSize = LEN(目錄)+1
hMem =的GlobalAlloc(GMEM_MOVABLE或者GMEM_DDESHARE,lSize)
如果hMem = 0或ISNULL(hMem)然後退出物業
pMemory = GlobalLock(hMem)
如果pMemory = 0或ISNULL(pMemory)的然後
GlobalFree(hMem)
退出物業
結束如果
呼叫MoveMemory(pMemory,內容,lSize)
呼叫GlobalUnlock(hMem)
如果(OpenClipboard(0&)<> 0)
如果(EmptyClipboard()<> 0)
TEMP = SetClipboardData(CF_TEXT,hMem)
結束如果
TEMP = CloseClipboard()
結束如果
GlobalFree(hMem)
高端物業的“結束”內容“屬性”設置“方法
末級

首先,弄清楚多少內存需要分配。 這將是超過一個字符正在發送數據的大小。 然後分配足夠的內存來保存這個文本,並投入分配的內存位置的文本。 (這涉及到鎖定的內存,然後移動到鎖定內存中的文本,然後釋放內存)。 然後,我們得到一個句柄到剪貼板,就像“搞定”沒有財產。 一旦我們有了句柄,我們消滅無論是在剪貼板上。 這可能是文字或圖形,或其他任何東西。 後已被清除剪貼板,然後在內存中的數據被放置在剪貼板上。 然後被清理的東西 - 剪貼板被關閉,並釋放內存。

使用這個類,它很容易。 首先,建立一個代理。 確保包括腳本庫的聲明中使用“Windows剪貼板”(選項)區。 那麼你的測試代碼是短短幾行:

DIM X作為WindowsClipboard
集X =新WindowsClipboard()
MSGBOX x.Contents
x.Contents =“檢查剪貼板數據的設置,把一些文字”
MSGBOX x.Contents

這會給你兩個消息框 - 從你面前跑了我們代理的運行期間設置剪貼板的內容與代理,其他的剪貼板的內容之一。

3038觀眾觀看了11893次

  1. 還沒有評論。
  1. 還沒有引用通告。