Is there a simple way to put a string into the clipboard ? In Microsoft's VBA, three simple lines are enough to do it:
Code: Select all
Set d = New DataObject
d.SetText (message)
d.PutInClipboard
Thanks in advance,
--ghe
Code: Select all
Set d = New DataObject
d.SetText (message)
d.PutInClipboard
Code: Select all
Global ClipString As String
Sub Clipper
Dim cBoard As Object
Dim cTrans As Object
Dim null As Object
cBoard = createUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
cTrans = createUnoListener("TR_", "com.sun.star.datatransfer.XTransferable")
ClipString = "Now this is ugly!"
cBoard.setContents(cTrans, null)
End Sub
function TR_getTransferData( aFlavor as com.sun.star.datatransfer.DataFlavor )
if (aFlavor.MimeType = "text/plain;charset=utf-16") then
TR_getTransferData = ClipString
endif
end function
function TR_getTransferDataFlavors()
Dim aF as new com.sun.star.datatransfer.DataFlavor
aF.MimeType = "text/plain;charset=utf-16"
aF.HumanPresentableName = "Unicode-Text"
TR_getTransferDataFlavors = Array(aF)
end function
function TR_isDataFlavorSupported(aFlavor as com.sun.star.datatransfer.DataFlavor) as Boolean
TR_isDataFlavorSupported = (aFlavor.MimeType = "text/plain;charset=utf-16")
end function
Code: Select all
global clipboard_string as string
sub putStringInClipboard (byval s as string)
dim sc, xt, null as object
sc = createUnoService ("com.sun.star.datatransfer.clipboard.SystemClipboard")
xt = createUnoListener ("clipboard_transferable_", "com.sun.star.datatransfer.XTransferable")
clipboard_string = s
sc.setcontents (xt, null)
end sub
function clipboard_transferable_getTransferData (df as com.sun.star.datatransfer.DataFlavor)
if (df.mimetype = "text/plain;charset=utf-16") then
clipboard_transferable_getTransferData = clipboard_string
end if
end function
function clipboard_transferable_getTransferDataFlavors ()
dim df as new com.sun.star.datatransfer.DataFlavor
df.mimetype = "text/plain;charset=utf-16"
df.humanpresentablename = "Unicode-Text"
clipboard_transferable_getTransferDataFlavors = array (df)
end function
function clipboard_transferable_isDataFlavorSupported (df as com.sun.star.datatransfer.DataFlavor) as boolean
clipboard_transferable_isDataFlavorSupported = (df.mimetype = "text/plain;charset=utf-16")
end function
Code: Select all
#0 0x00007ffff6ca7f45 in raise () from /lib/libc.so.6
#1 0x00007ffff6caad80 in abort () from /lib/libc.so.6
#2 0x00007ffff752ed45 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/libstdc++.so.6
#3 0x00007ffff752d176 in ?? () from /usr/lib/libstdc++.so.6
#4 0x00007ffff752d1a3 in std::terminate() () from /usr/lib/libstdc++.so.6
#5 0x00007ffff752d29e in __cxa_throw () from /usr/lib/libstdc++.so.6
#6 0x00007fffebbef6a0 in gcc3::raiseException () from /usr/lib/ure/lib/libgcc3_uno.so
#7 0x00007fffebbf1283 in cpp2uno_call () from /usr/lib/ure/lib/libgcc3_uno.so
#8 0x00007fffebbf1941 in cpp_vtable_call () from /usr/lib/ure/lib/libgcc3_uno.so
#9 0x00007fffebbf2ff2 in privateSnippetExecutor () from /usr/lib/ure/lib/libgcc3_uno.so
#10 0x00007fffee8728ce in x11::SelectionManager::handleSelectionRequest () from /usr/lib/openoffice/basis3.2/program/libvclplug_genlx.so
#11 0x00007fffee873a15 in x11::SelectionManager::handleXEvent () from /usr/lib/openoffice/basis3.2/program/libvclplug_genlx.so
#12 0x00007fffee873f1b in x11::SelectionManager::dispatchEvent () from /usr/lib/openoffice/basis3.2/program/libvclplug_genlx.so
#13 0x00007fffee873fb6 in x11::SelectionManager::run () from /usr/lib/openoffice/basis3.2/program/libvclplug_genlx.so
#14 0x00007ffff7a1e76c in osl_thread_start_Impl () from /usr/lib/openoffice/program/../basis-link/ure-link/lib/libuno_sal.so.3
#15 0x00007ffff641973a in start_thread () from /lib/libpthread.so.0
#16 0x00007ffff6d4169d in clone () from /lib/libc.so.6
#17 0x0000000000000000 in ?? ()
Code: Select all
Sub Main
putStringInClipBoard("Hi There")
End Sub
I had thought of that and tried it, but the Xtransferable "listener" doesn't have a dispose method.ms777 wrote:I think you should also implement the function TR_disposing
Good luck,
ms777