Перетаскивание больших виртуальных файлов с помощью VirtualFileDataObject - после удаления я не могу перетащить любой файл, пока мое приложение снова не станет активным - PullRequest
0 голосов
/ 14 сентября 2018

Я успешно использовал код, найденный в Блог задержки , и все работает, как и ожидалось, за исключением небольшого предостережения:

После завершения удаления, если я не щелкну свое приложение 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 решил приостановить процесс до тех пор, пока (как я уже упоминал) я не активировал окно своего приложения.

Кто-нибудь сталкивался с подобным сценарием?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...