2

В некоторых плохо реализованных программах (в моем случае iPhoneBrowser и MP3Gain, но есть и другие) после перетаскивания файла / папки из проводника в программу окно проводника станет непригодным для использования, пока программа не завершит свою работу. Его нельзя изменить, переместить или свернуть, и ни с одной из кнопок или значков нельзя взаимодействовать (курсор находится на курсоре "перетащите сюда"). Это продолжается до тех пор , пока программа завершит свою работу можно открыть еще одно окно проводника и перемещаться туда, но оригинальное окно по - прежнему заморожены.

Чтобы было понятно, это происходит со сторонним программным обеспечением, которое реагирует на перетаскивание в потоке, который создал событие. Копирование файлов в проводнике не вызывает проблемы.

Есть ли способ предотвратить такое поведение, чтобы я мог по-прежнему взаимодействовать с окном проводника, пока программа выполняет свою работу в своем собственном потоке / процессе / чем угодно? У меня Windows 7 x64, но поведение присутствовало и в XP32, IIRC.

5 ответов5

3

Я не уверен, правильно ли я понимаю вашу проблему, но рассматривали ли вы вопрос об открытии второго окна обозревателя?

2

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

Ленивые программисты сохраняли раскрывающийся список во время обработки файлов, таким образом замораживая Проводник, вместо того, чтобы просто сначала извлечь из него все удаленные имена файлов, а затем закрыть список, чтобы освободить Проводник ПЕРЕД выполнением обработки.

1

Это поправимо * , но вам придется немного изменить рабочий процесс.

Что вам нужно, это вспомогательное приложение, которое реализует обе стороны перетаскивания. Когда файлы сбрасываются в этот помощник, его IDropTarget создаст копию выпадающего списка и затем освободит проводник для выполнения других задач. Затем вы будете перетаскивать из помощника в iPhoneBrowser, который будет блокировать только копию выпадающего списка, а не оригинал, используемый проводником.

Благодаря многопоточности помощника также должна быть возможность избежать его замораживания на время.

* Требуется некоторая сборка. Если вы не программист, подружитесь с одним

1

А как насчет приложения, которое берет на себя весь процесс копирования? например, SuperCopier 2

0

Это может показаться странным ответом, но для больших операций копирования я использую xcopy. Да, который я впервые узнал, как использовать с DOS 6. Это все еще работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .