Передача текста из переменной в буфер

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
@Wiktor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 28.12.2005 (Ср) 9:32

Передача текста из переменной в буфер

Сообщение @Wiktor » 29.12.2005 (Чт) 9:54

Подскажите ответы на 2 вопроса:

1. Можно ли узнать в неактивном приложении изменилось ли содержание системного буфера? Т.е. приложение накапливает текст копируемый в др. программах. У меня - проверка происходит по таймеру, но такое ощущение, что метод этот через..., короче - неправильный.

2. Пре передаче текста "переменная - буфер" изменяется кодировка - в буфере крякозябры.

Clipboard.SetText PeremennayaString

Как решить проблему, желательно без копирования как RTF (vbCFRTF) - там появляются другие проблемы?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.12.2005 (Чт) 9:59

1. http://bbs.vbstreets.ru/viewtopic.php?t=11721
Скачать API-Guide, посмотреть в нём пример по функции SetClipboardViewer

2. http://bbs.vbstreets.ru/viewtopic.php?p=55306#55306 и http://bbs.vbstreets.ru/viewtopic.php?p=62176#62176
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

@Wiktor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 28.12.2005 (Ср) 9:32

Сообщение @Wiktor » 30.12.2005 (Пт) 12:12

Спасибо за ответ.
Шрифт поменял на Courier New Cyr - проблема с кодировкой снята.
Но вот по поводу изменения буфера - я не разобрался, опыта маловато. Благодаря API-Guide выяснил что нужно использовать функцию SetClipboardViewer. Но вот приведенный там пример у меня не заработал.
Сейчас у меня происходит постоянное сравнение (500 мсек) 20 знаков в буфере с записью в переменной.

Private Sub Timer1_Timer()
IdenNev = Left(Clipboard.GetText, 10) & Right(Clipboard.GetText, 10)
If IdenNev <> IdenStar Then
Buf = Clipboard.GetText
Vse = Vse + vbCrLf + Buf
RichTextBox1.Text = Vse
IdenStar = IdenNev
End If
End Sub

Если не трудно подскажите как провести этот номер с помощью SetClipboardViewer.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.12.2005 (Пт) 19:02

Почему приведённый там пример не заработал?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

@Wiktor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 28.12.2005 (Ср) 9:32

Сообщение @Wiktor » 05.01.2006 (Чт) 15:53

Разобрался. Но встал следующий вопрос: пример из двух частей – форма и модуль. Как сделать, чтобы при изменении буфера модуль дал команду форме на выполнение операции:
RichTextBox1.Text = Clipboard.GetText
Заранее спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.01.2006 (Чт) 15:58

Поместить этот код между If uMsg = WM_DRAWCLIPBOARD Then ... End If :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

@Wiktor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 28.12.2005 (Ср) 9:32

Сообщение @Wiktor » 05.01.2006 (Чт) 17:41

Так я уже пробовал. Но ведь RichTextBox не в модуле (его там и быть не может) а в форме. BV RichTextBox принимает за необъявленную переменную. Я уж весь инет перерыл - нашел только статью про передачу данных между процедурами. А о передаче команд - ничего.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.01.2006 (Чт) 17:48

Я не думаю, что BV принимает RichTextBox за необъявленную переменную...
Но я думаю, что с азами работы в VB нужно ознакомиться...
Form1.RichTextBox1.Text = Clipboard.GetText
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 191

    TopList