0
sttt
05.11.11
✎
17:14
|
Как программно получить текст из буфера обмена?
Есть такой вариант, но что то он не нравиться:
If StarDesktop.CurrentComponent.supportsService("com.sun.star.text.TextDocument") then
sTempURL = "private:factory/swriter" ' Адрес для создания чистого, временого текстового документа
oWorkDocument = ThisComponent
oDesktop = CreateUnoService("com.sun.star.frame.Desktop")
oTempDoc = oDesktop.loadComponentFromURL(sTempURL , "_default", 0, Array()) ' Создаём временный документ
oTempDoc.CurrentController.Frame.ContainerWindow.setVisible(False)
LocalProgress_Start(sMSG_PRGRS_START)
LocalProgress_SetRange(0, 2)
LocalProgress_SetValue(1)
wait(cInterfaceRedraw) ' Ждём отрисовку интерфейса
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") ' Диспетчер
dispatcher.executeDispatch(oTempDoc.CurrentController.Frame, ".uno:Paste", "", 0, Array()) ' Вставка во временный документ
LocalProgress_SetValue(2)
|
|
2
Jaap Vduul
05.11.11
✎
19:03
|
Clipboard = CreateUnoService(ServiceManager, "com.sun.star.datatransfer.clipboard.SystemClipboard");
ClipboardContent = Clipboard.getContents();
DataFlavors = ClipboardContent.getTransferDataFlavors();
Для Индекс = DataFlavors.GetLowerBound(0) По DataFlavors.GetUpperBound(0) Цикл
ЭлементМассива = DataFlavors.GetValue(Индекс);
Если ЭлементМассива.MimeType = "text/plain;charset=utf-16" Тогда
ТекстБуфераОбмена = ClipboardContent.getTransferData(ЭлементМассива);
КонецЕсли;
КонецЦикла;
|
|
3
sttt
05.11.11
✎
21:14
|
(2) Спасибо! тоже разобрался ))
sClipName = "com.sun.star.datatransfer.clipboard.SystemClipboard"
oClip = createUnoService(sClipName)
oTRX = createUnoListener("TR_", "com.sun.star.datatransfer.XTransferable")
oClipContents = oClip.getContents(oTRX, null)
oTypes = oClipContents.getTransferDataFlavors()
|
|