Недавно я столкнулся с этим очень странным поведением при использовании стандартного Блокнота Windows 10 и не могу понять, чем это можно объяснить.
Я использую плагин MT Power Drumkit 2 для программы генератора музыки LMMS. У первого есть своя временная папка, которая используется только для временного сохранения последовательности ударных, созданной с помощью плагина, в виде .midi. Файл всегда сохраняется как mtpdk.mid
.
Изучая использование плагина, я нашел несколько ресурсов, которые рекомендовали перетаскивать последовательность ударных, созданную в графическом интерфейсе плагина, в пустой Блокнот и сохранять ее как файл .midi.
А теперь самое странное, с чем мне нужна помощь.
При перетаскивании таким образом из графического интерфейса плагина в новый, пустой, безымянный Блокнот, как только появится содержимое, приложение «Блокнот»автоматическиотображается mtpdk.mid
как имя файла и сохраняет его содержимое.
Я подозреваю, что Блокнот каким-то образом распознает, что содержимое соответствует существующему mtpdk.mid
файлу, и заменяет созданный мной безымянный файл на существующий.
Это меня очень озадачивает. Это эквивалентно открытию пустого документа Word, вставке в него "One brown fox", и если есть сохраненный файл .docx, скажем, fox.docx
с "One brown fox", Word автоматически переключится с вашего только что созданного пустого документа на этот fox.docx
.
- Возможно ли это, и как Windows распознает происходящее?
- Папка temp плагина находится в C: (как в C:/tempFolder). Имеет ли это отношение к поведению?
- Существуют ли какие-либо соображения безопасности в связи с этим?
решение1
Нет, здесь нет никакого волшебного распознавания контента. На самом деле вы не перетаскиваете контент в Блокнот, чтобы вставить его — вы перетаскиваетефактический файлв Блокнот, чтобы открыть его. Таким образом, это не автоматическое сохранение чего-либо, а открытие файла, который уже был сохранен ранее.
Похоже, что ваша программа намеренно настраивает свой источник перетаскивания так, чтобы предлагать "объект оболочки" (а не только простые MIDI-данные). Когда вы перетаскиваете их в Блокнот, он просматривает типы данных, предоставленные через "источник перетаскивания", и если видит, что ему предлагается файл, он открывает этот файл.
(На самом деле, я не думаю, что Блокнот дажепринимает(Перетаскивание текста в него? Другие редакторы обычно это позволяют, но стандартный Блокнот Windows на самом деле нет.)
Это означает, что вы также сможете перетащить ту же последовательность непосредственно в папку, и я ожидаю, что Explorer распознает это как копию файла.
Вы также можете попробовать перетащить его в WordPad или Microsoft Word. Если вы перетащите что-то на строку заголовка/панель кнопок WordPad, оно будет открыто как файл; но если вы перетащите его в область «документа», оно будет вставлено либо как текст, либо как объект OLE, так что вы сможете увидеть, что именно вы перетаскивали.