Как окна обрабатывают интерфейс буфера обмена с Xming?

Мой вопрос возник из проблемы:

Я использую Xming в Windows 7 для подключения к хосту Linux (через PuTTY), чтобы запустить и отобразить терминал gnome. У меня проблемы с использованием буфера обмена Windows:

  • Копирование из Windows в Xming работает хорошо. (Ctrl-C, затем средний щелчок по Xming)
  • Копирование из Xming в другой сеанс Xming работает с задержкой. (Выбор на Xming, затем средний щелчок на другом Xming)
  • Копирование из Xming в Windows в большинстве случаев работает с задержкой. (Выбор в Xming, затем Ctrl-V в Windows)

В Windows: мне нужно повторить Ctrl + V много раз, прежде чем он передаст мой текст. (<10 кБайт)

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

Примечание 2: Если я использую VB-скрипт для вставки содержимого буфера обмена, у меня нет задержки.

Set objHTML = CreateObject("htmlfile")
ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")
path = "D:\Users\blanchj1\AppData\Local\Temp\clipboard"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(path, 2, true)
objFile.WriteLine ClipboardText
objFile.Close 

Примечание 3: Если я вставлю через меню приложения ex notepad++ → edit → paste, у меня останется эта задержка.

Примечание 4: Если я вставлю содержимое с помощью Ctrl + V во второй раз, у меня останется эта задержка.

Примечание 5: Задержка кажется пропорциональной количеству прошедших чартеров.

Так что я полагаю, что эта задержка связана с проблемой Windows. Это проблема преобразования символов в кодировку?

Кто может объяснить мне, как это работает?

Ответ 1

Вы должны ожидать, что задержка пропорциональна количеству вставленных символов, поскольку каждый из этих символов должен передаваться через терминал SSH, последовательный конвейер. Кроме того, рендеринг этих персонажей требует определенных усилий со стороны Windows. Я подозреваю, что причина того, что вы видите меньшую задержку при выполнении операции вставки VBScript, заключается в том, что операция вставки VBScript в значительной степени исключает пользовательский интерфейс из процесса, поскольку буфер обмена может работать с символами, не разбираясь в том, как их рисовать.