2016-06-09 3 views
0

Я заметил, что при запуске некоторых инсталляторов, которые создают файл tmp, окна все еще могут получить правильный значок, даже если в файле tmp есть пустой значок.C# Получить «реальный» значок для временного файла

У меня просто есть рабочий стол с циклом while, который следит за новыми процессами и отображает там значки в форме. Я использую SHGetFileInfo способы получить значки из имени файла, предоставленного с процессом, но я не знаю, как извлечь «реальный» значок из данного имени файла tmp, например C:\...\is-0N5SF.tmp\setup.tmp.

Есть ли способ получить процесс, который создал/запустил tmp-файл или способ, которым я мог бы разрешить путь к реальному файлу/значку?

ответ

1

Временные файлы не обязательно имеют значки, потому что они являются эфемерными, а их содержимое определяется хост-приложением. Файл .tmp может содержать XML-данные, Zip-архив, исполняемый файл или один из многих других вещей. Получение значка временного файла - это неправильный способ получить значок процесса.

Получить окно процесса, используйте GetClassInfoEx, чтобы получить данные класса окна, и сделайте копию члена hIcon. (Не ручка, данные.)

Смежные вопросы