Запись данных в буфер обмена и чтение их оттуда (Visual Basic)

Буфер обмена можно использовать для хранения данных, таких как текст и изображения. Поскольку буфер обмена используется всеми активными процессами, с его помощью можно передавать данные из одного процесса в другой. Объект My.Computer.Clipboard позволяет легко обращаться к буферу обмена, считывать из него данные и выполнять в него запись.

Чтение из буфера обмена

Используйте метод GetText для чтения текста из буфера обмена. Код в следующем примере считывает текст и отображает его в окне сообщения. Для правильной работы этого кода буфер обмена должен содержать какой-либо текст.

MsgBox(My.Computer.Clipboard.GetText())

Этот пример кода также доступен в качестве фрагмента кода IntelliSense. В средство выбора фрагмента кода он расположен в буфере обмена приложений > Windows Forms. Для получения дополнительной информации см. Code Snippets.

Используйте метод GetImage для извлечения изображения из буфера обмена. Код в этом примере проверяет наличие изображения в буфере обмена, прежде чем извлекать его и назначать PictureBox1.

If My.Computer.Clipboard.ContainsImage() Then
    Dim grabpicture As System.Drawing.Image
    grabpicture = My.Computer.Clipboard.GetImage()
    picturebox1.Image = grabpicture
End If

Этот пример кода также доступен в качестве фрагмента кода IntelliSense. В средство выбора фрагмента кода он расположен в буфере обмена приложений > Windows Forms. Дополнительные сведения см. в разделе "Фрагменты кода".

Элементы, добавленные в буфер обмена, сохраняются даже после того, как работа приложения завершается.

Определение типа файла, хранящегося в буфере обмена

В буфере обмена могут храниться данные в различных форматах, включая тексты, звуковые файлы и изображения. Чтобы определить, файл какого типа содержится в буфере обмена, можно использовать такие методы как ContainsAudio, ContainsFileDropList, ContainsImage и ContainsText. Если вы используете для проверки пользовательский формат файла, можно использовать метод ContainsData.

Функция ContainsImage позволяет определить, являются ли данные в буфере обмена изображением. Следующий код проверяет, являются ли данные изображением, и выдает соответствующий отчет.

If My.Computer.Clipboard.ContainsImage() Then
    MsgBox("Clipboard contains an image.")
Else
    MsgBox("Clipboard does not contain an image.")
End If

Очистка буфера обмена

Метод Clear очищает буфер обмена. Поскольку буфер обмена используют и другие процессы, очищение буфера может плохо на них повлиять.

В следующем примере кода демонстрируется применение метода Clear.

My.Computer.Clipboard.Clear()

Запись в буфер обмена

Используйте метод SetText для записи текста в буфер обмена. Следующий код записывает в буфер обмена строку "This is a test string" (Это — тестовая строка).

My.Computer.Clipboard.SetText("This is a test string.")

Метод SetText может принимать параметр формата, который содержит тип TextDataFormat. Следующий код записывает строку "This is a test string" (Это — тестовая строка) в буфер обмена в формате RTF.

My.Computer.Clipboard.SetText("This is a test string.", 
System.Windows.Forms.TextDataFormat.Rtf)

Используйте метод SetData для записи данных в буфер обмена. Код в этом примере записывает DataObject dataChunk в буфер обмена в пользовательском формате specialFormat.

My.Computer.Clipboard.SetData("specialFormat", dataChunk)

Используйте метод SetAudio для записи звуковых данных в буфер обмена. Код в этом примере создает массив байтов musicReader, считывает в него файл cool.wav и записывает его в буфер обмена.

Dim musicReader = My.Computer.FileSystem.ReadAllBytes("cool.wav")
My.Computer.Clipboard.SetAudio(musicReader)

Внимание

Поскольку к буферу обмена могут обращаться другие пользователи, не храните в нем конфиденциальные данные, включая пароли.

См. также