2015-06-03 4 views
1

SHFileOperation Требуется действительный дескриптор окна, в котором он выполняет все оконные сообщения.Неблокирующий SHFileOperation

Я хотел бы использовать SHFileOperation независимо от текущего процесса вызова, поэтому я могу закрыть процесс сразу после того, как SHFileOperation был вызван (и возвращен ?!), что означает, что я хотел бы «передать» его другому процессу или окну ,

Я пробовал дескриптор GetDesktopWindow, чтобы «передать» его исследователю.

Так что мой вопрос в том, как можно позвонить SHFileOperation, закрыть процесс сразу после звонка, и он все еще выполняет эту работу?

ответ

2

Итак, мой вопрос: как можно позвонить в SHFileOperation, закрыть процесс сразу после вызова, и он все еще выполняет эту работу?

Невозможно. Если вы убьете процесс, то SHFileOperation будет остановлен до завершения. Единственный способ добиться этого - вручить задачу вызова SHFileOperation на другой процесс.

Конечно, вы могли бы просто оставить свой процесс в живых до тех пор, пока SHFileOperation не вернется. Вы можете закрыть любой другой видимый интерфейс пользователя из своего процесса и дождаться завершения SHFileOperation. Затем выйдите из процесса.

+0

Будет ли работать удаленная ветка в explorer.exe с помощью дескриптора окна? Мне просто нужна процедура копирования и вставки с графическим интерфейсом и возможность передать эту задачу. –

+2

Invading explorer - это, конечно, не очень хорошая идея. В чем проблема с запуском нового процесса? Для этого все настроено. Процессы прекрасно изолированы. Вам не угрожает убийство оболочки пользователя. Вам даже не нужно создавать новый исполняемый файл. Просто запустите один и тот же исполняемый файл, но с аргументами командной строки, которые расскажут, как выполнить операцию с файлом. –

+0

Я думаю, это единственный правильный способ сделать это. Я все еще могу попытаться использовать инъекцию потока в explorer.exe и опубликовать ответ здесь позже. –