|
OpenOffice Basic и буфер обмена | ☑ | ||
|---|---|---|---|---|
|
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) |
|||
|
1
sttt
05.11.11
✎
18:17
|
up
|
|||
|
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() |
| Форум | Правила | Описание | Секции | Поиск |