HCL Notes / Domino / Diverses > Entwicklung

LotusScript ClipBoard Code für 32/64 Bit

<< < (2/2)

jBubbleBoy:
Ja wenn alle so einfach wäre ;)

Diese Lösung konnte ich einer KI entlocken, für Notes-DLL's gibt es solche Möglichkeiten nicht, hier muss man mit notesSession.UseDoubleAsPointer arbeiten und die Pointer auf double ändern. Bei meinen Recherchen bin ich sogar auf eine Quelle gestoßen in der die Variante mit CreateObject("htmlfile") genannt wird:
https://support.hcl-software.com/community?id=community_question&sys_id=6d7817641be3b59cddcd75d4cc4bcb9b

Bei der 64-Bit-Umstellung waren fast alle KI's hilflos, nun arbeitet HCL anscheinend an einem domänenspezifischen Sprachmodell, mal sehen ob und wie das zum Einsatz kommt. Bis dahin muss alles manuell umgesetzt werden, hilfreich ist dabei die Domino C-API: https://github.com/HCL-TECH-SOFTWARE/domino-c-api-docs um zu prüfen was ein Pointer ist oder auch nicht.

AlexZX:
Hallo,

eine weitere Möglichkeit ist es über Java zu lösen.

Zuerst eine Java Klasse mit der zugehörigen Methode in einer Java Scriptbibliothek erstellen


--- Code: ---public class Clipboard {
public static void copyStringToClipboard(String text) {
try {
java.awt.datatransfer.StringSelection selection = new java.awt.datatransfer.StringSelection(text);
java.awt.datatransfer.Clipboard clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
} catch(Exception e) {
e.printStackTrace();
}
}
}
--- Ende Code ---

Danach über LS2J auf diese Java Methode aus dem LotusScript zugreifen:


--- Code: ---Uselsx "*javacon"
Use "ScriptsJava"

Sub CopyTextToClipboard(text As String)

On Error Goto ErrorHandler

Dim js As JavaSession
Dim clipboardClass As JavaClass
Dim clipboardObject As JavaObject
Dim copyStringToClipboard As JavaMethod

If Fulltrim(text) <> "" Then
Set js = New JavaSession
Set clipboardClass = js.GetClass("Clipboard")
Set copyStringToClipboard = clipboardClass.GetMethod("copyStringToClipboard", "(Ljava/lang/String;)V")
Set clipboardObject = clipboardClass.CreateObject()

Call copyStringToClipboard.Invoke(clipboardObject, text)
End If

ExitSub:
Exit Sub

ErrorHandler:
Messagebox "Fehler: " & Err & " - " & Error$ & Chr(13) & Chr(10) & "Sub: CopyTextToClipboard" & Chr(13) & Chr(10) & "Line: " & Erl, 16, "Text in Zwischenablage kopieren"
Resume ExitSub
End Sub
--- Ende Code ---

Entsprechend kann man auch Text aus der Zwischenablage auslesen:


--- Code: ---public class Clipboard {
public static String getStringFromClipboard() {
String text = "";

try {
java.awt.datatransfer.Clipboard clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard();
text = (String)clipboard.getData(java.awt.datatransfer.DataFlavor.stringFlavor);
} catch(Exception e) {
text = "";
e.printStackTrace();
}

return text;
}
}
--- Ende Code ---


--- Code: ---Uselsx "*javacon"
Use "ScriptsJava"

Function GetStringFromClipboard() As String

On Error Goto ErrorHandler

Dim js As JavaSession
Dim clipboardClass As JavaClass
Dim clipboardObject As JavaObject
Dim getStringFromClipboard As JavaMethod

Dim text As String

Set js = New JavaSession
Set clipboardClass = js.GetClass("Clipboard")
Set getStringFromClipboard = clipboardClass.GetMethod("getStringFromClipboard", "()Ljava/lang/String;")
Set clipboardObject = clipboardClass.CreateObject()

text = getStringFromClipboard.Invoke(clipboardObject)

ExitFunction:
GetStringFromClipboard = text
Exit Sub

ErrorHandler:
text = ""
Messagebox "Fehler: " & Err & " - " & Error$ & Chr(13) & Chr(10) & "Function: GetStringFromClipboard" & Chr(13) & Chr(10) & "Line: " & Erl, 16, "Text aus der Zwischenablage lesen"
Resume ExitFunction
End Sub
--- Ende Code ---


Ist bei mir in einigen Datenbanken im Einsatzt, bisher ohne Prohleme.

Gruß
Alex

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln