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

Здесь можно обсудить ваш любимый плагин.
Jury
Posts: 1
Joined: Tue 10 Mar, 2020 20:03

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

Post 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 из корбки.
А его можно посадить на макрос как-то по сочетанию клавиш? Причём так, чтобы работало в любой раскладке?
User avatar
HaRT
Moderator
Posts: 9774
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 128 times
Been thanked: 267 times

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

Post by HaRT »

 ! Message from: HaRT
Jury wrote: Tue 10 Mar, 2020 20:11 А его можно посадить на макрос как-то по сочетанию клавиш? Причём так, чтобы работало в любой раскладке?
Это следует обсуждать не тут, а в теме плагина EMenu.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
SUSim
Posts: 1550
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 12 times

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

Post by SUSim »

Плагин вызвать макросом можно многими способами... И, наверняка, ваш вопрос решится, - только опишите
задачу КОНКРЕТНО по пунктам:
1 нажал
2 должно произойти
3 результат
SimSU ··· ·· -- ··· ··-
Pasha_ZZZ
Posts: 181
Joined: Mon 12 Jun, 2006 14:58
Been thanked: 4 times
Contact:

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

Post by Pasha_ZZZ »

Вот кстати изменение, которое поломало плагин. Похоже что как раз в версии 5463 уже не будет работать:
https://github.com/FarGroup/FarManager/ ... 09efdb7927
Init COM as multithreaded, ......
Тут можно скачать саму 5463 - https://github.com/FarGroup/FarManager/ ... .5463.1146
2useven10
Posts: 4314
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 220 times

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

Post by 2useven10 »

Сорсы плагина вроде бы есть.
Кто мешает поправить там безусловный вызов OleUninitialize() (в 2-х местах) на условный:
auto need_uninit = SUCCEEDED(OleInitialize(NULL)); ... if (need_uninit) OleUninitialize();
Pasha_ZZZ
Posts: 181
Joined: Mon 12 Jun, 2006 14:58
Been thanked: 4 times
Contact:

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

Post by Pasha_ZZZ »

Ну потом же еще собирать надо... ;-)
2useven10
Posts: 4314
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 220 times

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

Post by 2useven10 »

Собрал и пересобрал и ещё раз.
Attachments
src_changes_v302.7z
(7.04 KiB) Downloaded 14 times
ClipCopy_v302.7z
(14.05 KiB) Downloaded 16 times
Last edited by 2useven10 on Sat 20 Mar, 2021 17:32, edited 2 times in total.
Pasha_ZZZ
Posts: 181
Joined: Mon 12 Jun, 2006 14:58
Been thanked: 4 times
Contact:

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

Post by Pasha_ZZZ »

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

Code: Select all

Не могу положить данные в буфер: 0x800401f0
Pasha_ZZZ
Posts: 181
Joined: Mon 12 Jun, 2006 14:58
Been thanked: 4 times
Contact:

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

Post 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
Last edited by Pasha_ZZZ on Sat 20 Mar, 2021 15:32, edited 1 time in total.
2useven10
Posts: 4314
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 220 times

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

Post by 2useven10 »

Боюсь плагину нужно именно OleInitialize(), но он обламывается, т.к. уже выполнен фаром CoInitializeEx(MULTITHREADED).
Можно попробовать в этом случае CoUninitialize(), потом снова OleInitialize(), если очень хочется.
Last edited by 2useven10 on Sat 20 Mar, 2021 16:34, edited 1 time in total.
Pasha_ZZZ
Posts: 181
Joined: Mon 12 Jun, 2006 14:58
Been thanked: 4 times
Contact:

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

Post by Pasha_ZZZ »

2useven10 wrote: Sat 20 Mar, 2021 16:23Боюсь плагину нужно именно OleInitialize()
Это сильно вряд ли. С чему бы ему именно STA потребовалось.
2useven10 wrote: Sat 20 Mar, 2021 16:23Можно попробовать в этом случае CoUninitialize(), потом снова OleInitialize()
Ага, чтобы все остальное вместе с самим фаром отвалилось вместо одного плагина :grin:
2useven10
Posts: 4314
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 220 times

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

Post 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 по завершении работы.
2useven10
Posts: 4314
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 220 times

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

Post by 2useven10 »

Обновил файлы во вложениях. Теперь версия с переинициализацией (до и после).
2useven10
Posts: 4314
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 220 times

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

Post by 2useven10 »

2useven10 wrote: Sat 20 Mar, 2021 16:23 Боюсь плагину нужно именно OleInitialize()
Плагин использует OleSetClipboard(), может ещё что-то. Если их заменить, то переинициализацию можно убрать.
Last edited by 2useven10 on Sat 20 Mar, 2021 17:14, edited 1 time in total.
Pasha_ZZZ
Posts: 181
Joined: Mon 12 Jun, 2006 14:58
Been thanked: 4 times
Contact:

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

Post by Pasha_ZZZ »

2useven10 wrote: Sat 20 Mar, 2021 16:54Плагин использует OleSetClipboard(), может ещё что-то.
Set/Get/Flush.
2useven10
Posts: 4314
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 220 times

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

Post by 2useven10 »

Обновил ещё раз - баг.
Post Reply

Return to “Обсуждение плагинов”