Обновление: разработчики Ditto исправили это в Ditto Beta версии 3.21.248! Вы можете скачать его по адресу https://ditto-cp.sourceforge.io/beta/
Для получения дополнительной информации см. Https://sourceforge.net/p/ditto-cp/discussion/287511/thread/6c5ae56a/#a80b
Оригинальный ответ:
Я нашел причину, по которой Ditto неправильно исключает текст KeePassXC, но, к сожалению, я пока не нашел, как это исправить:
То же самое не может увидеть приложение KeePassXC.
Поскольку он не может видеть приложение KeePassXC, когда оно открыто, Ditto не знает, игнорировать ли текст, скопированный из него, даже если он находится в списке исключений.
Я понял это, включив журнал Ditto. Я исключил все процессы KeePassXC, которые я видел в диспетчере задач, а также в блокноте, чтобы проверить оба и посмотреть, что происходит, когда я пытаюсь скопировать текст из обоих приложений. (Тоже самое скриншот)
(Чтобы включить ведение журнала, откройте Ditto, затем нажмите Ctrl + F5, чтобы запустить / остановить журнал. Файл журнала можно найти в C:\Users\ имя пользователя \ AppData \ Roaming \ Ditto)
Когда я попытался скопировать текст из блокнота, в журнале ниже показано, что должно происходить, когда текст копируется из приложения, которое было добавлено в список исключений Ditto. Обратите внимание, что Ditto распознал блокнот как активное приложение (выделено на этом скриншоте).
[2018/8/4 01:30:03.533 - ClipboardViewer.cpp 241] OnClipboardChange - Start
[2018/8/4 01:30:03.540 - ClipboardViewer.cpp 320] INCLUDE app names: *, Active App: notepad.exe
[2018/8/4 01:30:03.547 - ClipboardViewer.cpp 333] Inlclude app names Found Match * - notepad.exe
[2018/8/4 01:30:03.554 - ClipboardViewer.cpp 347] EXCLUDE app names keepassxc.exe;keepassxc-proxy.exe;keepassxc-cli.exe;keepass.exe;*.kdbx;notepad.exe;, Active App: notepad.exe
[2018/8/4 01:30:03.559 - ClipboardViewer.cpp 357] Exclude app names Found Match notepad.exe - notepad.exe - NOT SAVING COPY
[2018/8/4 01:30:03.566 - ClipboardViewer.cpp 243] OnClipboardChange - End
Однако в журнале ниже показано, что происходит, когда я копирую текст из KeePassXC. Обратите внимание, что "Активное приложение" пустое (выделено на этом скриншоте). Если Ditto не может видеть KeePassXC, то он не может знать, что он должен игнорировать текст, скопированный изнутри программы.
[2018/8/4 01:29:44.999 - ClipboardViewer.cpp 241] OnClipboardChange - Start
[2018/8/4 01:29:45.007 - ClipboardViewer.cpp 320] INCLUDE app names: *, Active App:
[2018/8/4 01:29:45.013 - ClipboardViewer.cpp 333] Inlclude app names Found Match * -
[2018/8/4 01:29:45.018 - ClipboardViewer.cpp 347] EXCLUDE app names keepassxc.exe;keepassxc-proxy.exe;keepassxc-cli.exe;keepass.exe;*.kdbx;notepad.exe;, Active App:
[2018/8/4 01:29:45.021 - ClipboardViewer.cpp 266] OnDrawClipboard:: *** SetTimer *** 455056375
[2018/8/4 01:29:45.024 - ClipboardViewer.cpp 243] OnClipboardChange - End
[2018/8/4 01:29:45.135 - ClipboardViewer.cpp 392] OnDrawClipboard::OnTimer 455056500
[2018/8/4 01:29:45.141 - CopyThread.cpp 56] OnClipboardChange - Start
[2018/8/4 01:29:45.147 - CopyThread.cpp 109] LoadFromClipboard - Before
[2018/8/4 01:29:45.157 - Clip.cpp 435] Tried to set description from cf_unicode text, Set: 1, Desc: [keepassxc test]
Я не эксперт по KeePassXC или Ditto, поэтому я не уверен, что это проблема с Ditto или с KeePassXC. Интересно, может ли эта ошибка на самом деле быть некоторой "функцией" безопасности KeePassXC - может быть, она пытается скрыться от других программ?
Если мы сможем заставить Ditto видеть KeePassXC в качестве активного приложения, то оно должно работать правильно. К сожалению, я еще не понял, как это сделать.
Я знаю, что это только половина ответа, извините. Я определил, почему Ditto правильно не исключает KeePassXC, но я не знаю, как это исправить. У меня та же проблема, что и у вас, поэтому я надеюсь, что эта информация поможет кому-то еще умнее меня найти решение.