Файлы C # - в буфере обмена Как установить / прочитать, какая операция вызывается - вырезать или копировать - PullRequest
2 голосов
/ 27 января 2011

Я прочитал много тем о вырезке / копировании в буфер обмена, но не нашел ответа на мою проблему

Я работаю над приложением "Диспетчер файлов", таким как Windows Explorer.Файлы перечислены в виде списка, в подробном представлении.

У меня есть операции CUT / COPY / PASTE, и я знаю, как использовать File.Move, .Copy, Clipboard.GetFileDropList (), .SetFileDropList ()........... и это прекрасно работает.

Что я не знаю, так это как и где я могу записать в память (какой метод) и как я могу прочитать из памяти (буфер обмена), какая операцияпоследний раз использовался, вырезать или копировать?Есть ли какая-нибудь строка в памяти, которую пишет проводник Windows, которую я могу прочитать, а затем узнать, является ли это CUT или COPY?

Я хочу позволить пользователю иметь возможность вырезать / копировать из моего приложения для запуска Explorer и тисковнаоборот.

Ответы [ 2 ]

0 голосов
/ 27 января 2011

Если вы хотите определить, какая операция буфера обмена была вызвана последней, я думаю, что вам нужно прослушивать сообщения Windows, в частности WM_CUT (0x0300) против WM_COPY (0x0301), и отслеживать, какая из них была отправлена ​​/ получена последней. Вы можете переопределить метод Control.WndProc, как описано в MSDN .

Вот еще несколько справочных ссылок для сообщений Windows:

Сообщения буфера обмена

WM_CUT

WM_COPY

0 голосов
/ 27 января 2011

Вы используете Clipboard.SetText для добавления текста в буфер обмена (Копировать) и Clipboard.GetText для извлечения текста из буфера обмена (Вставить).

Здесь есть статья , которая сможет вам помочь.

Также, относительно копирования / вставки файлов, см. этот ТАК вопрос:

...