Eugie » 19 мар 2004, 16:21
Цель вопроса не вполне понятна.
Если нужно узнать, какая программа по умолчанию открывает файл с заданным расширением (
file assoсiation), используй
FindExecutable или
AssocQueryString, например:
Код: Выделить всё
if (FindExecutable("mydoc.txt", NULL, szExeFile) > 32)
cout << ".txt files are assosiated to open with " << szExeFile << endl;
Если же вопрос в том, кто в данный момент владеет конкретным файлом (скажем, по хэндлу файла получить хэндл процесса, в контексте которого он открыт), то лично я такого способа не знаю. И сомневаюсь, что он существует, поскольку отношение 'файл-процесс' неоднозначно по определению: файл м.б. открыт одновременно несколькими процессами.
мда...хм... а в проге TaskInfo почему-то все видно...
Не знаю, не использовал.
если есть любые идени пишите...
Нет, ну можно, конечно, пробежаться по заголовкам всех главных окон...
Цель вопроса не вполне понятна.
Если нужно узнать, какая программа по умолчанию открывает файл с заданным расширением ([i]file assoсiation[/i]), используй [b]FindExecutable[/b] или [b]AssocQueryString[/b], например:
[code]
if (FindExecutable("mydoc.txt", NULL, szExeFile) > 32)
cout << ".txt files are assosiated to open with " << szExeFile << endl;
[/code]
Если же вопрос в том, кто в данный момент владеет конкретным файлом (скажем, по хэндлу файла получить хэндл процесса, в контексте которого он открыт), то лично я такого способа не знаю. И сомневаюсь, что он существует, поскольку отношение 'файл-процесс' неоднозначно по определению: файл м.б. открыт одновременно несколькими процессами.
[quote]мда...хм... а в проге TaskInfo почему-то все видно... [/quote]
Не знаю, не использовал.
[quote]если есть любые идени пишите...[/quote]
Нет, ну можно, конечно, пробежаться по заголовкам всех главных окон... :)