Strona główna > Oprogramowanie Lotus Notes , Lotus Notes samouczek , LotusScript , Uwagi Designer Script> Lotus Notes Czytanie / Pisanie schowka Windows

Lotus Notes Script Czytanie / Pisanie schowka Windows

Jeśli trzeba czytać schowka okna (lub zapisać na nim), podczas gdy w LotusScript, własnej klasy ułatwia. Tworzenie biblioteki skryptów, i nazywają to Schowka systemu Windows. Idź do (deklaracje) przestrzeń biblioteki skrypt, i umieścić w definicji klasy.

Po pierwsze, należy zadeklarować klasy API, które będą potrzebne:

Oświadczam Private Function GetClipboardData Lib "User32" (ByVal wFormat As Long) As Long
Oświadczam Private Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hData As Long) As Long
Oświadczam Private Lib OpenClipboard Funkcja "User32" Alias ​​"OpenClipboard" (ByVal hwnd As Long) As Long
Oświadczam Private Lib CloseClipboard Funkcja "User32" Alias ​​"CloseClipboard" () As Long
Oświadczam Private Function GlobalLock Lib "kernel32" Alias ​​"GlobalLock" (ByVal hMem As Long) As Long
Oświadczam Private Function GlobalUnlock Lib "kernel32" Alias ​​"GlobalUnlock" (ByVal hMem As Long) As Long
Oświadczam Private Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Oświadczam Private Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Oświadczam Private Function EmptyClipboard Lib "user32" () As Long
Oświadczam Private Function lstrcpyLP2Str Lib "kernel32" Alias ​​"lstrcpyA" (ByVal lpString1 As String, _
ByVal lpString2 As Long) As Long
Oświadczam Private Function lstrlenLP Lib "kernel32" Alias ​​"lstrlenA" (ByVal lpString As Long) As Long
Oświadczam Private Sub MoveMemory Lib "kernel32" Alias ​​"RtlMoveMemory" (ByVal strDest As Any, _
ByVal lpSource As Any, ByVal Length As Any)
Oświadczam Private Function getFocus Lib "User32" Alias ​​"getFocus" () As Long

Potrzebny będzie również pewne stałe zdefiniowane, więc dodać te następne:

Private Const CF_TEXT = 1
Private Const GMEM_MOVABLE = & H2 i
Private Const GMEM_DDESHARE = ​​& H2000 &

Na koniec należy dodać w definicji klasy. Najpierw przejść przez tę właściwość, że będzie czytał ze schowka

WindowsClipboard klasy

Public Property Get Zawartość As String
Dim hClipboard As Long
Dim LpStrl As Long
Dim Resultl As Long
Dim Clipboardstr As String

Jeśli (OpenClipboard (0 &) <> 0) Then
hClipboard = GetClipboardData (CF_TEXT)
Jeśli (hClipboard <> 0) Then
LpStrl = GlobalLock (hClipboard)
Clipboardstr = Spacja $ (lstrlenLP (LpStrl))
Resultl = lstrcpyLP2Str (Clipboardstr, LpStrl)
GlobalUnlock (hClipboard)
Więcej
Clipboardstr = "NULL"
End If
CloseClipboard call ()
Więcej
Clipboardstr = ""
End If
Zawartość = Clipboardstr
End Property  "Ends" Pobierz "metoda" Spis treści "własności

Pierwszą rzeczą, klasy nie jest uzyskać uchwyt do schowka. Następnie schowka jest zablokowana. Tymczasowy pusty obszar danych jest więc nie na tyle duże, blok danych ciąg do przechowywania wyników. Dane wprowadzone do schowka, że ​​pusty obszar i schowka jest odblokowany, aby uwolnić ją od nowa. Wyniki są zwracane do użytkownika.

W celu ustawienia zawartość schowka i wykorzystuje te same właściwości, treści, ale tym razem jest nieruchomość Ustaw zamiast Get.
Publiczny treści Property Set As String
Dim lSize As Long
Dim hMem As Long
Dim pMemory As Long
Dim temp As Variant

lSize = Len (treści) +1
hMem = GlobalAlloc (GMEM_MOVABLE Albo GMEM_DDESHARE, lSize)
Jeśli hMem = 0 lub IsNull (hMem) Then Exit Property
pMemory = GlobalLock (hMem)
Jeśli pMemory = 0 lub IsNull (pMemory) Następnie
GlobalFree (hMem)
Nieruchomości Exit
End If
Zadzwoń MoveMemory (pMemory, Zawartość lSize)
Zadzwoń GlobalUnlock (hMem)
Jeśli (OpenClipboard (0 &) <> 0) Then
Jeśli (EmptyClipboard () <> 0) Then
temp = SetClipboardData (CF_TEXT, hMem)
End If
temp = CloseClipboard ()
End If
GlobalFree (hMem)
End Property  "Ends" Set "metoda" Spis treści "własności
End Class

Po pierwsze, dowiedzieć się, ile pamięci musi być przydzielone. Będzie to jeszcze jeden znak od rozmiaru przesyłanych danych. Następnie przydzielić wystarczającej ilości pamięci do przechowywania tekstu i umieścić tekst w przydzielone miejsce w pamięci. (Wiąże się to zamek pamięci, a następnie przesuwając tekst w zablokowanej pamięci, a następnie uwolnienie pamięci). Następnie otrzymujemy uchwyt do schowka, tak jak "get" własności nie. Kiedy już mamy, które obsługują, możemy zniszczyć wszystko, co jest w schowku. Może to być tekst lub grafika, lub cokolwiek innego. Po schowka zostały usunięte, a następnie dane w pamięci znajduje się w schowku. Następnie wyczyszczenie - schowka jest zamknięty i pamięć jest zwolniona.

Aby skorzystać z tej klasy, to całkiem proste. Po pierwsze, budować agenta. Upewnij się, że to biblioteka skryptów z pomocą prywatnego "schowka systemu Windows" w (Opcje) obszarze. Następnie kod test jest tylko kilka linijek:

Dim x As WindowsClipboard
Set x = New WindowsClipboard ()
X.Contents Msgbox
x.Contents = "Sprawdź ustawienia danych do schowka, wprowadzenie tekstu"
X.Contents Msgbox

To da ci dwa okna komunikatu - jeden z zawartości schowka z przed uruchomieniem agenta, inne z zawartości schowka możemy ustawić podczas jazdy agenta.

Wyświetlono 11767 razy przez 3003 widzów

  1. Nie ma jeszcze komentarzy.
  1. Brak trackbacków.