Homepage > Software Lotus Notes , Lotus Notes Tutorial , LotusScript , Notes Designer > Lotus Script Notes lettura / scrittura negli Appunti di Windows

Script Lotus Notes lettura / scrittura negli Appunti di Windows

Se avete la necessità di leggere la clipboard di Windows (o scrivere su di esso), mentre in LotusScript, questa classe personalizzata rende facile. Creare una libreria di script, e lo chiamano negli Appunti di Windows. Andate in tutto il (dichiarazioni) area della libreria di script, e mettere in questa definizione di classe.

In primo luogo, è necessario dichiarare le classi API che sarà necessario:

Dichiarare Private Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Dichiarare Private Function SetClipboardData Lib "user32" (ByVal wFormat As Long, hData As Long) As Long
Dichiarare privato Lib OpenClipboard Funzione "User32" "OpenClipboard" Alias ​​(ByVal hwnd As Long) As Long
Dichiarare privato Lib CloseClipboard Funzione "User32" "CloseClipboard" Alias ​​() As Long
Dichiarare Private Function GlobalLock Lib "kernel32" Alias ​​"GlobalLock" (ByVal hMem As Long) As Long
Dichiarare Private Function GlobalUnlock Lib "kernel32" Alias ​​"GlobalUnlock" (ByVal hMem As Long) As Long
Dichiarare Private Function GlobalAlloc Lib "kernel32" (wFlags As Long, dwBytes As Long) As Long
Dichiarare Private Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Dichiarare Private Function EmptyClipboard Lib "user32" () As Long
Dichiarare Private Function lstrcpyLP2Str Lib "kernel32" Alias ​​"lstrcpyA" (ByVal lpString1 As String, _
LpString2 ByVal As Long) As Long
Dichiarare Private Function lstrlenLP Lib "kernel32" Alias ​​"lstrlenA" (lpString As Long) As Long
Dichiarare Private Sub MoveMemory Lib "kernel32" Alias ​​"RtlMoveMemory" (strDest ByVal As Any, _
LpSource ByVal As Any, ByVal Length As Any)
Dichiarare Private Function GetFocus Lib "user32" Alias ​​"GetFocus" () As Long

Sarà inoltre necessario soem costante definita, in modo da aggiungere quelli accanto:

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

Infine, aggiungete nella definizione della classe. In primo luogo, andiamo oltre la proprietà che verrà letto dagli appunti

Classe WindowsClipboard

Public Property Get contenuto As String
HClipboard Dim As Long
LpStrl Dim As Long
Resultl Dim As Long
Clipboardstr Dim As String

Se (OpenClipboard (0 &) <> 0) Then
hClipboard = GetClipboardData (CF_TEXT)
Se (hClipboard <> 0) Then
LpStrl = GlobalLock (hClipboard)
Clipboardstr = Space $ (lstrlenLP (LpStrl))
Resultl = lstrcpyLP2Str (Clipboardstr, LpStrl)
GlobalUnlock (hClipboard)
Altro
Clipboardstr = "NULL"
End If
Chiama CloseClipboard ()
Altro
Clipboardstr = ""
End If
Contenuto = Clipboardstr
End Property  'Termina il metodo "Get" per la proprietà "Contenuto"

La prima cosa che la classe non fa altro che ottenere un handle al clipboard. Poi la clipboard è bloccato. Un'area temporanea vuota dei dati è resa quindi c'è un blocco abbastanza grande di dati di tipo stringa per contenere i risultati. I dati clipboard viene messo in quella zona vuota e la clipboard è sbloccato per liberare di nuovo. I risultati vengono restituiti all'utente.

Per impostare il contenuto degli appunti, questo utilizza la stessa proprietà Contents, ma questa volta la proprietà è impostata, invece di Get.
Pubblici istituito proprietà dei contenuti As String
LSize Dim As Long
HMem Dim As Long
PMemory Dim As Long
Dim Temp As Variant

lSize = Len (Contents) +1
hMem = GlobalAlloc (GMEM_MOVABLE O GMEM_DDESHARE, lSize)
Se hMem = 0 Or IsNull (hMem) Then Exit Property
pMemory = GlobalLock (hMem)
Se pMemory = 0 Or IsNull (pMemory) Then
GlobalFree (hMem)
Uscire Proprietà
End If
Chiamare MoveMemory (pMemory, Contents, lSize)
Chiama GlobalUnlock (hMem)
Se (OpenClipboard (0 &) <> 0) Then
Se (EmptyClipboard () <> 0) Then
temp = SetClipboardData (CF_TEXT, hMem)
End If
temp = CloseClipboard ()
End If
GlobalFree (hMem)
End Property  'Termina il metodo "Set" per la proprietà "Contenuto"
End Class

In primo luogo, capire quanta memoria deve essere allocata. Questo sarà un carattere più la dimensione dei dati inviati. Poi allocare memoria sufficiente per contenere questo testo e inserire il testo nella posizione di memoria allocata. (Questo implica il blocco della memoria, quindi spostando il testo nella memoria bloccata, sbloccando quindi la memoria). Poi ottenere un handle negli appunti, proprio come la proprietà "get" ha fatto. Una volta che abbiamo quella maniglia, ci spazzare via tutto ciò che è nella clipboard. Questo potrebbe essere di testo o grafica, o qualsiasi altra cosa. Dopo la clipboard è stato eliminato, quindi i dati in memoria è collocato negli appunti. Poi le cose sono pulite - appunti è chiuso e la memoria viene liberata.

Per utilizzare questa classe, è abbastanza facile. In primo luogo, costruire un agente. Assicurati di includere la libreria script con l'istruzione USE "Appunti di Windows" nella (Opzioni) area. Allora il tuo codice di prova è poche righe:

X Dim As WindowsClipboard
Set x = WindowsClipboard New ()
MsgBox x.Contents
x.Contents = "Controllare l'impostazione dei dati del clipboard mettendo in qualche testo"
MsgBox x.Contents

Questo vi darà due finestre di messaggio - quello con il contenuto degli appunti da prima di eseguire l'agente, l'altra con il contenuto degli appunti ci siamo posti durante il funzionamento dell'agente.

Visto 11860 volte da 3026 spettatori

  1. Nessun commento ancora.
  1. Nessun trackback ancora.