![]() |
![]() |
|
Как скопировать строку в буфер обмена Windows? | ☑ | ||
---|---|---|---|---|
0
HollliGaN
31.10.07
✎
11:49
|
Как скопировать строку в буфер обмена Windows?
т.е. у меня есть поле ввода с типом строка, справа хочу сделать кнопку скопировать в буфер Windows. |
|||
1
Freeman391
31.10.07
✎
12:12
|
Можно как-нибудь так:
ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"), "ПолеHTMLДокумента", Ложь); Окно=ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow; Окно.clipboardData.SetData("Text","бла-бла-бла"); Индекс=ЭлементыФормы.Индекс(ЭлементыФормы.Найти("ПолеHTMLДокумента")); ЭлементыФормы.Удалить(Индекс); |
|||
2
HollliGaN
31.10.07
✎
12:31
|
(1) Спасибо, как вириант
Для тех кому интересно Окно=ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow; тЗначение = Окно.clipboardData.getData("Text"); так же можно и прочитать |
|||
3
HollliGaN
31.10.07
✎
13:19
|
На Win 2003 server вариант (1) не работает, в буфер (Окно.clipboardData.SetData("Text","бла-бла-бла")) не записывает..
Еще варианты есть? М.б. через WBS? |
|||
4
BabySG
31.10.07
✎
13:32
|
Названия говорят за себя
procedure CopyStringToClipboard(s: string); var hg: THandle; P: PChar; begin hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, Length(S)+1); P:=GlobalLock(hg); StrPCopy(P, s); GlobalUnlock(hg); OpenClipboard(Application.Handle); SetClipboardData(CF_TEXT, hg); CloseClipboard; GlobalFree(hg); end; { **** UBPFD *********** by delphibase.endimus.com **** >> Добавление текста в буфер обмена без использования модуля Clipbrd Wnd - Handle окна, получающего доступ к буферу обмена, может быть Application.Handle или Form.Handle Value - текст, помещаемый в буфер обмена Зависимости: Windows Автор: Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург Copyright: Dimka Maslov Дата: 22 августа 2002 г. ***************************************************** } function SetClipboardText(Wnd: HWND; Value: string): Boolean; var hData: HGlobal; pData: pointer; Len: integer; begin Result := True; if OpenClipboard(Wnd) then begin try Len := Length(Value) + 1; hData := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Len); try pData := GlobalLock(hData); try Move(PChar(Value)^, pData^, Len); EmptyClipboard; SetClipboardData(CF_Text, hData); finally GlobalUnlock(hData); end; except GlobalFree(hData); raise end; finally CloseClipboard; end; end else Result := False; end; Пример использования: procedure TForm1.Button1Click(Sender: TObject); begin SetClipboardText(Handle, 'qwerty'); end; |
|||
5
HollliGaN
31.10.07
✎
13:35
|
(4) Это делфи? (...by delphibase.endimus.com...)
|
|||
6
smaharbA
31.10.07
✎
14:26
|
а ты безопасность позырь ИЕ и все заработает, а (4) это не наш метод, это ламерам...
|
|||
7
Гений 1С
гуру
11.01.08
✎
11:29
|
Добавил эти две функции в свою библиотеку функций. ;-)
//Возвращает текст буфера обмена в виде строки Функция обПолучитьТекстБуфераОбмена() Экспорт Ф=Константы.ПолучитьФорму(); Ф.ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"), "ПолеHTMLДокумента", Ложь); Окно=Ф.ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow; Возврат Окно.clipboardData.GetData("Text"); Ф=0; КонецФункции //Устанавливает текст буфера обмена в виде строки Функция обУстановитьТекстБуфераОбмена(Текст) Экспорт Ф=Константы.ПолучитьФорму(); Ф.ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"), "ПолеHTMLДокумента", Ложь); Окно=Ф.ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow; Окно.clipboardData.SetData("Text", Текст); Ф=0; КонецФункции |
|||
8
Kerk
11.01.08
✎
11:43
|
Может под шумок добавить функцию получения картинки из буфера обмена, сделанный по кнопке PrtScn? ;)
|
|||
9
Кураж
11.01.08
✎
11:48
|
Байда с ПолеHTMLДокумента действительно не работает при определенных настройках политики безопастности, а вот это:
HTML=Новый COMОбъект("htmlfile"); HTML.parentWindow.clipboardData.setData("Text","бла-бла"); наш метод! |
|||
10
Гений 1С
гуру
11.01.08
✎
11:49
|
(8) без внешних компонент не получится. Ты не знаешь WSH умеет работать с буфером обмена?
|
|||
11
Гений 1С
гуру
11.01.08
✎
11:52
|
Лучше так:
//20080111 fixin //Возвращает текст буфера обмена в виде строки //=Отлажена Функция обПолучитьТекстБуфераОбмена() Экспорт #Если Клиент Тогда Ф=Константы.ПолучитьФорму(); Ф.ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"), "_85c2d560073c4494ba5007e881556b1b", Ложь); Окно=Ф.ЭлементыФормы._85c2d560073c4494ba5007e881556b1b.Документ.parentWindow; Возврат Окно.clipboardData.GetData("Text"); Ф=0; #КонецЕсли КонецФункции //Устанавливает текст буфера обмена в виде строки //=Отлажена Функция обУстановитьТекстБуфераОбмена(Текст) Экспорт #Если Клиент Тогда Ф=Константы.ПолучитьФорму(); Ф.ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"), "_85c2d560073c4494ba5007e881556b1b", Ложь); Окно=Ф.ЭлементыФормы._85c2d560073c4494ba5007e881556b1b.Документ.parentWindow; Окно.clipboardData.SetData("Text", Текст); Ф=0; #КонецЕсли КонецФункции |
|||
12
ЫЫЫЫ
11.01.08
✎
11:59
|
(9)Нифига подобного.
Настройка "Разрешить операции вставки из сценария" на этод метод также распространяется... |
|||
13
smaharbA
11.01.08
✎
12:00
|
(3) безопасность снизь
|
|||
14
smaharbA
11.01.08
✎
12:00
|
+ в ИЕ
|
|||
15
Кураж
11.01.08
✎
12:02
|
(12) У меня первый не работает, а второй работает. Почему?
|
|||
16
Kerk
11.01.08
✎
12:05
|
(10) Написано, что "Дополнительно предоставляются возможности: работы с буффером обмена и проигрывания звуковых файлов." для версии WSH.GUI v2.2
|
|||
17
Гений 1С
гуру
11.01.08
✎
13:14
|
//20080111 fixin
//Возвращает текст буфера обмена в виде строки //=Отлажена Функция ___обПолучитьТекстБуфераОбмена() Экспорт #Если Клиент Тогда Объект = Новый COMОбъект("htmlfile"); Возврат Объект.ParentWindow.ClipboardData.Getdata("Text"); #КонецЕсли КонецФункции //20080111 fixin //Устанавливает текст буфера обмена в виде строки //=Отлажена Функция ___обУстановитьТекстБуфераОбмена(Текст) Экспорт #Если Клиент Тогда Объект = Новый COMОбъект("htmlfile"); Объект.ParentWindow.ClipboardData.Setdata("Text", Текст); Возврат Текст; #КонецЕсли КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |