Я успешно использовал код, найденный в Блог задержки , и все работает, как и ожидалось, за исключением небольшого предостережения:
После завершения удаления, если я не щелкну свое приложение WPF или не наведем на него курсор, процесс удаления не будет завершен, и я не смогу перетащить любой другой файл из файловой системы.
Я написал следующий код в полном действии, чтобы «обмануть» систему, чтобы активировать окно моего приложения, и она хорошо работает, когда местом назначения является файловая система:
var virtualFileDataObject = new VirtualFileDataObject(
(vfdo) =>
{
dropPoint = VirtualFileDataObject.NativeMethods.GetMousePosition();
//VirtualFileDataObject.NativeMethods.SetMousePosition(dragPoint);
//VirtualFileDataObject.NativeMethods.SetMousePosition(dropPoint);
},
(vfdo) =>
{
VirtualFileDataObject.NativeMethods.SetMousePosition(dragPoint);
//for (int i = 0; i < 100000000; i++) { };
//VirtualFileDataObject.NativeMethods.SetMousePosition(dropPoint);
VirtualFileDataObject.NativeMethods.SetForegroundWindow(winHandle);
}
);
Проблема в том, когда я сбрасываю файлы в Outlook. Файлы удаляются без проблем, но мой «трюк» не работает, похоже, что Outlook решил приостановить процесс до тех пор, пока (как я уже упоминал) я не активировал окно своего приложения.
Кто-нибудь сталкивался с подобным сценарием?