Остановился в обработке исключения. Там каждый раз такая ошибка
[System.InvalidCastException] = {System.InvalidCastException: Unable to cast object of type 'System.IO.MemoryStream' to type 'System.String'.
0
tormozit #5, ред. 20 сентября 2025 23:26
Надо бы вернуть на твоей стороне обычную строку вместо MemoryStream
0
tormozit #6, ред. 20 сентября 2025 23:21
Даже если я угадаю кодировку, то потеряется совместимость в этом сценарии между старыми версиями КлипАнгела и новым Турбоконфом.
0
tormozit #7, ред. 21 сентября 2025 07:08
Кодировку Unicode угадал. Удаление мусорных клипов в КлипАнгеле заработало.
0
bolsun #8, ред. 21 сентября 2025 11:44
Я не понял как .NET формирует DataObject, что бы он мог автоматически преобразовывать обратно в string через .NET GetData()
В каком формате эти данные - непонятно. Какая-то сериализация похоже.
Я по правилам сформировал и сериализовал в байтовый массив строку в кодировке Unicode, таким образом ее могут получать и другие приложения, не только на .NET
0
tormozit #9, ред. 21 сентября 2025 11:53
(8) bolsun, формат RemoveTempClipsFromHistory по большому счету специфичен для взаимодействия Турбоконфа только с КлипАнгелом. Поэтому кажется нет большого смысла учитывать удобство его чтения какими то другими приложениями. А вот то, что в старых версиях КлипАнгела теперь много мусора попадает в историю - ощутимое неудобство, т.к. это замедляет поиск как визуальный, так и программный (фильтрацию).
0
bolsun #10, 21 сентября 2025 12:02
(9) tormozit, DataObject - это OLE контейнер, для его использования есть методы
[DllImport("ole32.dll", CharSet = CharSet.Auto)]
public static extern int OleGetClipboard(ref System.Runtime.InteropServices.ComTypes.IDataObject data);
[DllImport("ole32.dll", CharSet = CharSet.Auto)]
public static extern int OleSetClipboard(System.Runtime.InteropServices.ComTypes.IDataObject pDataObj);
которые и использует стандартный механизм .NET (который у тебя же на машине вызывает подтормаживания)
Поэтому варианты:
Вернуться к предыдущей реализации установки буфера
Пользователям ClipAngel + TurboConf (не думаю, что их огромное количество в такой связке) обновиться до версии с поддержкой.
0
bolsun #11, ред. 21 сентября 2025 12:04
Есть конечно еще вариант пробовать написать свою реализацию Unmanaged кода помещения OLE контейнера в буфер, но это уже за гранью разумного.
0
tormozit #12, 21 сентября 2025 12:13
Да, наверное накладно будет поддержать старый формат. Тогда просьба добавить проверку на версию сборки активного процесса ClipAngel. Если она менее 2.20, то выводить (при старте) рекомендацию обновить его.
0
tormozit #13, ред. 21 сентября 2025 12:27
Выпустил ClipAngel 2.20 с исправлением автоматического удаления временных клипов, создаваемых TurboConf 6.4.9390+
#1, 20 сентября 2025 08:30
Я передаю флаг.
#2, ред. 20 сентября 2025 21:46
Почти всегда теперь приходит пустая строка внутри этого формата.

#3, 20 сентября 2025 21:48
Из 20 попыток 20 раз пришла пустая строка.
#4, ред. 20 сентября 2025 22:41
У меня там попытка
Остановился в обработке исключения. Там каждый раз такая ошибка
#5, ред. 20 сентября 2025 23:26
Надо бы вернуть на твоей стороне обычную строку вместо MemoryStream
#6, ред. 20 сентября 2025 23:21
Даже если я угадаю кодировку, то потеряется совместимость в этом сценарии между старыми версиями КлипАнгела и новым Турбоконфом.
#7, ред. 21 сентября 2025 07:08
Кодировку Unicode угадал. Удаление мусорных клипов в КлипАнгеле заработало.
#8, ред. 21 сентября 2025 11:44
Я не понял как .NET формирует DataObject, что бы он мог автоматически преобразовывать обратно в string через .NET GetData()
В каком формате эти данные - непонятно. Какая-то сериализация похоже.
Я по правилам сформировал и сериализовал в байтовый массив строку в кодировке Unicode, таким образом ее могут получать и другие приложения, не только на .NET
#9, ред. 21 сентября 2025 11:53
(8) bolsun, формат RemoveTempClipsFromHistory по большому счету специфичен для взаимодействия Турбоконфа только с КлипАнгелом. Поэтому кажется нет большого смысла учитывать удобство его чтения какими то другими приложениями. А вот то, что в старых версиях КлипАнгела теперь много мусора попадает в историю - ощутимое неудобство, т.к. это замедляет поиск как визуальный, так и программный (фильтрацию).
#10, 21 сентября 2025 12:02
(9) tormozit, DataObject - это OLE контейнер, для его использования есть методы
[DllImport("ole32.dll", CharSet = CharSet.Auto)]
public static extern int OleGetClipboard(ref System.Runtime.InteropServices.ComTypes.IDataObject data);
[DllImport("ole32.dll", CharSet = CharSet.Auto)]
public static extern int OleSetClipboard(System.Runtime.InteropServices.ComTypes.IDataObject pDataObj);
которые и использует стандартный механизм .NET (который у тебя же на машине вызывает подтормаживания)
Поэтому варианты:
#11, ред. 21 сентября 2025 12:04
Есть конечно еще вариант пробовать написать свою реализацию Unmanaged кода помещения OLE контейнера в буфер, но это уже за гранью разумного.
#12, 21 сентября 2025 12:13
Да, наверное накладно будет поддержать старый формат. Тогда просьба добавить проверку на версию сборки активного процесса ClipAngel. Если она менее 2.20, то выводить (при старте) рекомендацию обновить его.

#13, ред. 21 сентября 2025 12:27
Выпустил ClipAngel 2.20 с исправлением автоматического удаления временных клипов, создаваемых TurboConf 6.4.9390+
#14, 21 сентября 2025 13:24
(12) tormozit, это норма?
#15, 21 сентября 2025 14:08
(14) bolsun, в версии 2.19 да
#16, 21 сентября 2025 21:07
6.4.9395.41477
Добавил проверку и вывод уведомления.
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#17, 22 сентября 2025 10:35
Проверил. Уведомление появляется.
tormozit изменил статус на Закрыто