Page 7 of 9

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Tue 29 Sep, 2009 12:17
by Andrey Budko

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Tue 10 Mar, 2020 20:11
by Jury

Latest post of the previous page:

Sim wrote: Mon 25 Nov, 2019 20:28 Начиная с версии Far 3.0.5464 x64 плагин перестал работать.
Подтверждаю. Очень грустно. Это был один из моих самых важных плагинов. Только из-за него одного придётся откатываться на Far 3.0.5462.
SUSim wrote: Sun 02 Feb, 2020 10:37 А чем не подходит Emenu из корбки.
А его можно посадить на макрос как-то по сочетанию клавиш? Причём так, чтобы работало в любой раскладке?

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Tue 10 Mar, 2020 20:13
by HaRT
 ! Message from: HaRT
Jury wrote: Tue 10 Mar, 2020 20:11 А его можно посадить на макрос как-то по сочетанию клавиш? Причём так, чтобы работало в любой раскладке?
Это следует обсуждать не тут, а в теме плагина EMenu.

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sun 23 Aug, 2020 14:24
by SUSim
Плагин вызвать макросом можно многими способами... И, наверняка, ваш вопрос решится, - только опишите
задачу КОНКРЕТНО по пунктам:
1 нажал
2 должно произойти
3 результат

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 05:54
by Pasha_ZZZ
Вот кстати изменение, которое поломало плагин. Похоже что как раз в версии 5463 уже не будет работать:
https://github.com/FarGroup/FarManager/ ... 09efdb7927
Init COM as multithreaded, ......
Тут можно скачать саму 5463 - https://github.com/FarGroup/FarManager/ ... .5463.1146

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 08:03
by 2useven10
Сорсы плагина вроде бы есть.
Кто мешает поправить там безусловный вызов OleUninitialize() (в 2-х местах) на условный:
auto need_uninit = SUCCEEDED(OleInitialize(NULL)); ... if (need_uninit) OleUninitialize();

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 11:45
by Pasha_ZZZ
Ну потом же еще собирать надо... ;-)

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 14:54
by 2useven10
Собрал и пересобрал и ещё раз.

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 15:25
by Pasha_ZZZ
2useven10 wrote: Sat 20 Mar, 2021 14:54Собрал.
Копировать все так же не работает.

Code: Select all

Не могу положить данные в буфер: 0x800401f0

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 15:30
by Pasha_ZZZ
Потому что юзается OleInitialize, вот ее описание:
Initializes the COM library on the current apartment, identifies the concurrency model as single-thread apartment (STA)
А в фаре стало MTA.

Надо использовать CoInitializeEx - https://docs.microsoft.com/en-us/window ... itializeex

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 16:23
by 2useven10
Боюсь плагину нужно именно OleInitialize(), но он обламывается, т.к. уже выполнен фаром CoInitializeEx(MULTITHREADED).
Можно попробовать в этом случае CoUninitialize(), потом снова OleInitialize(), если очень хочется.

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 16:34
by Pasha_ZZZ
2useven10 wrote: Sat 20 Mar, 2021 16:23Боюсь плагину нужно именно OleInitialize()
Это сильно вряд ли. С чему бы ему именно STA потребовалось.
2useven10 wrote: Sat 20 Mar, 2021 16:23Можно попробовать в этом случае CoUninitialize(), потом снова OleInitialize()
Ага, чтобы все остальное вместе с самим фаром отвалилось вместо одного плагина :grin:

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 16:38
by 2useven10
Pasha_ZZZ wrote: Sat 20 Mar, 2021 16:34 Это сильно вряд ли. С чему бы ему именно STA потребовалось.
STA может и не нужен, но OleInitialize() это не только CoInitialize().
Pasha_ZZZ wrote: Sat 20 Mar, 2021 16:34 Ага, чтобы все остальное вместе с самим фаром отвалилось вместо одного плагина
Фар и все остальные не так давно жили с STA, к тому же можно и вернуть MTA по завершении работы.

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 16:41
by 2useven10
Обновил файлы во вложениях. Теперь версия с переинициализацией (до и после).

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 16:54
by 2useven10
2useven10 wrote: Sat 20 Mar, 2021 16:23 Боюсь плагину нужно именно OleInitialize()
Плагин использует OleSetClipboard(), может ещё что-то. Если их заменить, то переинициализацию можно убрать.

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 17:10
by Pasha_ZZZ
2useven10 wrote: Sat 20 Mar, 2021 16:54Плагин использует OleSetClipboard(), может ещё что-то.
Set/Get/Flush.

ClipCopy (Clipboard Copy) — Копирование через буфер обмена

Posted: Sat 20 Mar, 2021 17:32
by 2useven10
Обновил ещё раз - баг.